ホームページ >Java >&#&チュートリアル >2 つの Joda-Time 日付の間の日数を正確に計算するにはどうすればよいですか?

2 つの Joda-Time 日付の間の日数を正確に計算するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-04 09:48:11148ブラウズ

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

Joda-Time 日付間の日数を計算する

Joda-Time を使用する場合、多くの場合、2 つの日付間の日数の差を決定する必要があります。 。 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() を使用すると、間違った答えが発生しますtoLocalDate() メソッドは正しく 1 を返しますが、0 です。 day.

LocalDate に変換することで、DST によって生じる曖昧さがなくなり、より正確な日数の差が得られます。このアプローチにより、タイムゾーンや夏時間の考慮事項に関係なく、一貫した結果が保証されます。

以上が2 つの Joda-Time 日付の間の日数を正確に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。