我有一段代碼用於計算兩個Date對象之間的天數,在大多數情況下,它工作正常。 但是,如果兩個對象之間的日期範圍包括3月底,則結果總是比應該小1。例如2014年3月31日 - 2014年3月29日= 1,而應該是2.Java,如何在考慮DST時減去日期對象
據我所知,這是由於3月有30天24小時和1天23小時由於DST,這是價值的原因是1少。
但是,我不確定解釋失蹤小時的最佳方法。
// This was what I have initially
int numDays = (int) ((dateTo.getTime() - dateFrom.getTime())/(1000 * 60 * 60 * 24));
// I have tried rounding, since it should have 23 hours left over, but it didn't actually work.
int numDays = (Math.round(dateTo.getTime() - dateFrom.getTime())/(1000 * 60 * 60 * 24));
任何幫助/指針將不勝感激。我不得不使用Java 7,但我不能使用Jodatime。
如果您使用Java 8,請使用java.time包,而不是古老的'java.util.Date'。如果沒有,喬達時間是一個推薦的圖書館。 – RealSkeptic
可能的重複http://stackoverflow.com/questions/20165564/calculating-days-between-two-dates-with-in-java – keuleJ
那麼,如果你既不能使用Java-8(我刪除,因此我的帖子),也沒有另一個外部庫,那麼你真的運氣不好,因爲舊Java不支持計算持續時間。您必須設置自己的黑客,例如在[SO-post](http://stackoverflow.com/a/28865648/2491410)中提出的建議。 –