2011-06-15 68 views
1

如何将当前时间的差值转换为给定时间以创建时间格式的字符串:HH:mm?恩。 18:36将长时差转换为格式HH:mm [Java]

我做了以下,但它不是24小时格式,它将添加AM/PM到最后,并且它是3个小时关闭。

 java.util.Date today = new java.util.Date(); 
     java.sql.Timestamp ts1 = new java.sql.Timestamp(today.getTime()); 

     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss"); 
     java.util.Date parsedDate = dateFormat.parse(time); 
     java.sql.Timestamp ts2 = new java.sql.Timestamp(parsedDate.getTime()); 

     long nowTime = ts1.getTime(); 
     long givenTime = ts2.getTime(); 

     long timeDiff = givenTime - nowTime; 

     //convert to string 
     java.util.Date d = new java.util.Date(timeDiff); 
     result = DateFormat.getTimeInstance(DateFormat.SHORT).format(d); 
     //Outputs: 6:56 PM for example 
+1

可能的重复[如何计算Java中的时间跨度和格式化输出?](http://stackoverflow.com/questions/635935/how-can-i-calculate-a-time-span-in -java-and-format-the-output) – Thilo 2011-06-15 01:53:53

+0

另外,一个可能的重复:http://stackoverflow.com/questions/2949699/converting-time-from-hhmmss-to-hhmm-in-java – 2011-06-15 01:55:22

回答

3

一旦一件容易的事情你可以做的是调用的getTime()两个日期,然后减去它们像这样:

long timeDiff = today.getTime() - ts1.getTime() 

你应该能够在两个时间之间毫秒的差异。之后,您知道一秒钟是1k毫秒,60分钟1分钟,60分钟等等。

2

看看Commons Lang DurationFormatUtils

或Joda-Time's PeriodFormatter

+0

真的没有理由使用第三方库。 – mre 2011-06-15 02:00:39

+1

@mre:实际上,鉴于Java糟糕的日期和日历实现,有充分理由使用第三方库。对于这个特定的例子,vodnik的答案就足够了,但在处理日期和/或时间时很少出现这种情况。 +1从我这里弥补你的downvote。 – 2012-06-07 01:29:49

相关问题