2012-02-03 71 views
0

以下代碼不能正確打印日期,我還需要打印日期和分鐘。獲取JODA工作時間

Duration duration = new Duration(1328223198241L - 1326308781131L); 
Period p2 = new Period(duration.getMillis()); 
System.out.println(p2.getDays()); // prints 0, should print 22 days 
System.out.println(p2.getHours()); // prints 531 which is expected. 
+0

什麼_are_有這些數字?他們應該是什麼意思? – 2012-02-03 02:00:58

+0

我敢打賭,代碼是正確的;這是你的假設是錯誤的。檢查你對預期內容的理解。 – duffymo 2012-02-03 02:08:44

+0

Joda Time的哪個版本? – Bill 2012-02-03 02:24:59

回答

0

此行爲the javadocs解釋說:「時間是更大的超過一天,那麼所有的剩餘時間將被存儲在最大可用精確場,時間在這種情況下。」

如果你解釋你想要做什麼,而不是你如何去做,那麼我相信我們能夠幫助你。例如,要查找什麼,我認爲你想從p2.getDays()獲得:

Days.daysBetween(dateTime1, dateTime2).getDays() 
3

據javadoc的,「在此期間類型只有精確的領域將被用於標準週期型,這是時間。因此年,月,周和字段將不會填充。「因此你變得零。

考慮這個選擇。

Duration duration = new Duration(1328223198241L - 1326308781131L);  
Period p2 = new Period(duration.getMillis()); 
System.out.println(p2.getHours()); // prints 531 which is expected. 
System.out.println(p2.toStandardDays().getDays()); // prints 22 days 
0

執行以下操作不夠:System.out.println(duration.getStandardDays());