2013-02-28 146 views
39

假設有兩個日期A(開始時間)& B(結束時間)。 B可能是同一天甚至不同日子的時間。我的任務是以秒爲單位顯示差異。我正在使用的日期格式是使用joda時間的兩個日期之間的秒差?

Date Format :: "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 

例如,

start date :: "2011-11-16T14:09:23.000+00:00" 
end date ::  "2011-11-17T05:09:23.000+00:00"    

幫助表示讚賞。

回答

102

使用Seconds類:

DateTime now = DateTime.now(); 
DateTime dateTime = now.plusMinutes(10); 
Seconds seconds = Seconds.secondsBetween(now, dateTime); 
System.out.println(seconds.getSeconds()); 

這段代碼打印出600。我覺得這是你所需要的。

如需進一步的建議,請瀏覽joda-time的文檔。這很不錯,而且大多數事情都很容易發現。

如果你需要一些幫助,日期(它在文檔,真的)的解析,檢查了相關的問題,如:

Parsing date with Joda with time zone

+0

感謝名單pcalcao ..它的工作! :-) – 2013-03-02 05:54:15

+10

如果你正在尋找差異(作爲一個正數),一定要取'secondsBetween'的絕對值,否則,如果參數顛倒了,你可能會得到一個負數(例如,如果你調用'Seconds .secondsBetween(dateTime,now)'。 – user1366367 2013-08-24 22:30:17

4

@pcalcao的答案將是最好的在多數情況下。請注意秒將被四捨五入爲整數。

如果你有興趣在亞秒級精確度只在。減去毫秒:

double seconds = (now.getMillis() - dateTime.getMillis())/1000d;