首頁 >Java >java教程 >如何精確計算兩個 Joda-Time 日期之間的天數?

如何精確計算兩個 Joda-Time 日期之間的天數?

Linda Hamilton
Linda Hamilton原創
2024-12-04 09:48:11143瀏覽

How to Accurately Calculate the Number of Days Between Two Joda-Time Dates?

計算Joda-Time 日期之間的天數

使用Joda-Time 時,通常需要確定兩個日期之間的天數差異。雖然 Days.daysBetween 方法提供了解決方案,但它並不總是能正確處理夏令時 (DST) 調整。

為了確保準確的日期計算,請使用以下方法:

Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays()

此程式碼使用toLocalDate() 將開始和結束DateTime 實例轉換為LocalDate,有效地忽略小時、分鐘和秒

具有DST歧義的範例

考慮以下具有DST 歧義的範例:

// 5am on October 20th to 1pm on October 21st, 2013, Brazil
DateTimeZone BRAZIL = DateTimeZone.forID("America/Sao_Paulo");
DateTime start = new DateTime(2013, 10, 20, 5, 0, 0, BRAZIL);
DateTime end = new DateTime(2013, 10, 21, 13, 0, 0, BRAZIL);

// Using withTimeAtStartOfDay()
System.out.println(Days.daysBetween(start.withTimeAtStartOfDay(),
                                   end.withTimeAtStartOfDay()).getDays());

// Using toLocalDate()
System.out.println(Days.daysBetween(start.toLocalDate(),
                                   end.toLocalDate()).getDays());

使用withTimeAtStartOfDay() 會導致錯誤答案為0,而toLocalDate() 方法正確回傳1 day.

透過轉換為LocalDate,我們消除了DST造成的歧義,並獲得更準確的天數差異。無論時區或夏令時的考量如何,這種方法都能確保一致的結果。

以上是如何精確計算兩個 Joda-Time 日期之間的天數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn