Joda-Time 日付間の日の差の計算
Joda-Time では、2 つの日付間の日の差を求めるには、時間の差異を考慮する必要があります。 。日数を正確に計算するには、時、分、秒を無視する必要があります。
Days.daysBetween を使用した元の解決策
Days.daysBetween メソッドが表示されます。適切な解決策を提供することを目的としていますが、一方のデートが夕方で、もう一方のデートが朝である場合に問題が発生します。これは、タイムゾーンによっては「一日の始まり」が午前 0 時ではなく午前 1 時を曖昧に指す場合があるためです。
LocalDate を使用した正確な計算
この曖昧さを回避するにはの場合は、DateTime の代わりに LocalDate を Days.daysBetween と組み合わせて使用することをお勧めします。 LocalDate は時間情報のない日付を表し、結果に日数の違いのみが反映されるようにします。
例
次の例を考えてみましょう:
DateTime start = new DateTime(2013, 10, 20, 5, 0, 0, DateTimeZone.forID("America/Sao_Paulo")); DateTime end = new DateTime(2013, 10, 21, 13, 0, 0, DateTimeZone.forID("America/Sao_Paulo")); int daysBetween = Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays(); System.out.println(daysBetween); // Prints 1
結論
LocalDate を使用すると、日数の差が生じます計算が正確になり、タイムゾーンの違いによる不一致や、時差により開始日と終了日が異なる日になる可能性が排除されます。
以上が2 つの Joda-Time 日付間の日の差を正確に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。