Java グレゴリオ暦に奇妙な問題があります。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:S Z");
sdf.setTimeZone(TimeZone.getTimeZone("US/Pacific"));
GregorianCalendar cal1 = new GregorianCalendar(TimeZone.getTimeZone("US/Pacific"));
cal1.setTimeInMillis(1320566400000L);
GregorianCalendar cal2 = new GregorianCalendar(TimeZone.getTimeZone("US/Pacific"));
cal2.setTimeInMillis(1320570000000L);
System.out.println(sdf.format(cal1.getTime()));
System.out.println(sdf.format(cal2.getTime()));
デフォルトのタイムゾーン = US Pacific のマシンで上記のコードを実行しましたが、マシンはドイツで実行されています。
結果は次のとおりです。
2011-11-06 01:00:00:0 -0700
2011-11-06 01:00:00:0 -0800
結果に異なるタイムゾーンがある理由が本当にわかりません...別のマシン(デフォルトのタイムゾーン= GMT)でもコードをテストしましたが、正しく動作します。
なぜこの問題が発生するのか、誰かが考えを持っていますか?
ベスト、マイケル