米国のタイムゾーンを使用しているため、夏時間を確認しようとしています。米国の DST は 2013 年 3 月 10 日の午前 2 時に始まり、2013 年 11 月 3 日の午前 2 時に終了します。したがって、午前 2:00 に時計を 1 時間進め、終了したら午前 2:00 に時計を 1 時間戻す必要があります。DST が終了する午前 2 時の実際の時刻がどのようになるかを確認したかっただけです。DST の開始時には正常に動作していますが、DST の終了時には動作しません。私が試したコードのサンプルは次のとおりです。
TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
Calendar cal =Calendar.getInstance();
if (TimeZone.getDefault().useDaylightTime())
{
for(int i = 0; i< 5 ; ++i)
{
cal.set(2013,10,03,1,57+i,60);
long timemillis = cal.getTimeInMillis();
setCurrentTimeInMills(timemillis);
String formatTime = Dateformated(timemillis);
System.out.println(formatTime);
}
}
出力は次のようになります。
03-11-2013 01:58:00 PST
03-11-2013 01:59:00 PST
03-11-2013 02:00:00 PST
03-11-2013 02:01:00 PST
03-11-2013 02:02:00 PST
私のJavaバージョン:1.6.0_16。ここで Datformated() は、時間を読み取り可能な形式で表示するユーザー定義関数であり、setCurrentTime() は現在の時刻を設定するユーザー定義メソッドでもあります。午前 1:59:60 に時刻が午前 2:00 になる理由を教えてください。私の知る限りでは、代わりに午前 1:00 にする必要がありますか?