質問
私は日光の節約で奇妙な問題に直面しました。私は00:05 am時間に毎日実行する予定のJavaプログラムを持っていますが、昨日は23:05に実行されました。私はグレゴリオカレンダーを使用して、このプログラムをJavaでスケジュールしています。誰かが手動で実行しない限り、これの前に23:05に実行されたことはありません。これがカレンダーの問題であるかどうかを知っていますか?
解決
この問題はほぼ間違いなく夏時間の切り替えに関連していますが、DSTスイッチは通常午前2時に発生するため、真夜中頃に発生するはずです。
マシンがどのタイムゾーンに設定されているかを知らずに、実際のコードを表示することなく、もっと言うのは難しいです。
他のヒント
それは昼間の貯蓄の問題に関連していませんか?前夜は、世界のいくつかの地域で夏から冬に変わりました。
最高の推測では、これはJavaの古いバージョンで実行されており、日曜日の朝に米国で日曜日の朝に始まったとは考えられていませんでした。
内部的には、Javaは時間をGMTオフセットとして保存します...具体的には、1970年1月1日以降のミリ秒数00:00:00.000 GMT( Calendar
クラスの説明)。
Java自体を更新したくない場合でも、 TimeZone Updaterツール システムにインストールされているJava Timezoneを更新します。
注:これは、上記のゾーンの1つでない限り、Java 5U6で修正されたと思われます。 このリスト.
世界DST時間vs北米のDST時間は、時には一貫性がないことがあります。
ヨーロッパでは、10月の最後の日曜日にDSTが変わります。http://en.wikipedia.org/wiki/daylight_saving_time_around_the_world#europe
北米では、11月の第1日曜日にDSTが変わります。http://en.wikipedia.org/wiki/daylight_saving_time_around_the_world#north_america
より正確な情報を提供するコメントのために編集。
00:05に実行されたと思いますが、「新しい」(冬)時には23:05だったと思います。