私のタイムゾーンは CET (ベルリン) です。
Joda の DateTime をテストしているときに、いくつかの奇妙なことに気付きました。
new DateTime(1893, 4, 1, 0, 0, 0, 0);
=> java.lang.IllegalArgumentException: Illegal instant due to time zone offset transition:
new DateTime(1893, 3, 31, 0, 0, 0, 0).toDate();
=> Fri Mar 31 00:06:32 CET 1893
タイム ゾーンが 6 分 32 秒ずれて、時間が存在しなくなりますか??
タイムゾーン情報を指定していなかったため、この種の問題が発生するとは予想していなかったため、これは非常に予想外であると言わざるを得ません。
1893 年 3 月に CET (ベルリン) が存在しない場合new DateTime(1893, 3, 31, 0, 0, 0, 0)
、指定した時刻 (つまり、0 分 0 秒) に一致するタイム ゾーンを選択しないのはなぜですか?
DateTime で正しい時刻を取得するためのオプションは何ですか?
-- 編集 --
問題は toDate() のようです。質問を投稿する前に編集しました。
Joda 自体は実際には問題なく動作します。
new DateTime(1893, 3, 31, 0, 0, 0, 0);
=> 1893-01-01T00:00:00.000+00:53:28
Date への変換によって、オフセットの一部が分と秒に移動されるだけです。