Joda Timeでは、DateTimeZone.isLocalDateTimeGap
メソッドを使用して、春先の夏時間への移行によって作成されたギャップに該当するため、ローカルの日付と時刻が無効であるかどうかを簡単に判断できます。
DateTimeZone zone = DateTimeZone.forID("America/New_York");
LocalDateTime ldt = new LocalDateTime(2013, 3, 10, 2, 0);
boolean inGap = zone.isLocalDateTimeGap(ldt); // true
しかし、フォールバック遷移をどのように検出するのでしょうか? 言い換えれば、重複があるためにローカルの日付と時刻があいまいになる可能性がある場合、それをどのように検出しますか? のようなものを期待しますがzone.isLocalDateTimeOverlap
、存在しません。もしそうなら、私はそれを次のように使用します:
DateTimeZone zone = DateTimeZone.forID("America/New_York");
LocalDateTime ldt = new LocalDateTime(2013, 11, 3, 1, 0);
boolean overlaps = zone.isLocalDateTimeOverlap(ldt); // true
Joda-Time のドキュメントでは、変換中にオーバーラップが発生した場合、別段の指示がない限り、以前の可能性が採用されることは明らかです。しかし、その動作を検出する方法については述べていません。