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

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

Linda Hamilton
發布: 2024-12-04 09:48:11
原創
234 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板