我正在尝试运行以下代码。我用 dst 从 3 月 4 日凌晨 2 点开始定义一个时区,并在 3 月 2 日凌晨 5 日结束。
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 值应该相同。