1

以下のコードを実行しようとしています。3 月の第 4 日曜日の午前 2 時から始まる dst でタイムゾーンを定義し、3 月の第 5 日曜日の午前 2 時に終了します。

  SimpleTimeZone st = new SimpleTimeZone(-18000000, "DSTTesting", Calendar.MARCH, 4, 1, 7200000, Calendar.MARCH, -1, 1, 7200000);

  Calendar cal = Calendar.getInstance(st);
  cal.set(2013, 0, 1, 0, 0, 0);
  cal.set(Calendar.MILLISECOND, 0);
  System.out.println("DST_OFFSET before subtracting hours : "+cal.get(Calendar.DST_OFFSET));
  cal.add(Calendar.HOUR, -2);
  System.out.println("DST_OFFSET after subtracting hours : "+cal.get(Calendar.DST_OFFSET));

出力は次のとおりです。
時間を減算する前の DST_OFFSET : 0 時間
を減算した後の DST_OFFSET : 3600000

2013 年 1 月の午前 1 時から 2 時間を引くと、DST_OFFSET が変わる理由がわかりません。理想的には、2013 年 1 月 1 日と 2012 年 12 月 31 日の両方の日付が、作成した TimeZone の DST 期間外であるため、両方の DST_OFFSET の値が同じである必要があります。

4

1 に答える 1