私はいくつかのアラーム機能に取り組んでおり、各アラーム時間のミリ秒を計算するために Joda を使用しています。次のようないくつかのユーティリティメソッドがあります。
public static DateTime getNextDateTimeWithHourMinute(int hour, int minute) {
DateTime now = new DateTime();
DateTime then = now
.withHourOfDay(hour)
.withMinuteOfHour(minute)
.withSecondOfMinute(0)
.withMillisOfSecond(0);
return then.isBefore(now) ? then.plusDays(1) : then;
}
これは、次の時間と分の発生を計算します。問題は、たとえば、3 月 10 日の午前 2 時を取得しようとすると、
java.lang.IllegalArgumentException: タイム ゾーン オフセット遷移による不正なインスタント: 2013-03-10T07:00:00.000
この場合、時間が存在しないことはわかっていますが、 と の間で何らかの遷移が発生し、その後自動的に修正されることを判断する簡単な方法はありますnow
かthen
? 明らかに、修正はユースケースによって異なります。私の場合、時計が現在とその後の間に後退している場合に、1 時間遅れて DateTime オブジェクトを取得できるようにしたいと考えています。つまり、たとえば、ユーザーが午前 3 時にアラームを設定し、その後時計がその時間の前後に戻った場合、時計の時刻が午前 3 時 (現在は 1 時間後) になったときにアラームが起動します。暴言で申し訳ありませんが、この質問が何らかの意味をなすことを願っています。