我有一些代码使用 Calendar.set() 返回给定日期值的小时开始。我在 2012 年 11 月 4 日星期日(东部时区 - EDT 到 EST 切换)遇到了以下问题:
public void testStartOfHourDST1() {
Calendar cal = Calendar.getInstance();
long time = 1352005200000L; // Nov 4, 2012, 1AM EDT
cal.setTimeInMillis(time);
cal.set(Calendar.MILLISECOND, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
System.out.println(new Date(time));
System.out.println(new Date(cal.getTimeInMillis()));
System.out.println(System.getProperty("java.version"));
assertEquals(cal.getTimeInMillis(), time); // fails
return;
}
输出:
2012 年 11 月 4 日星期日 01:00:00 EDT
2012 年 11 月 4 日星期日 01:00:00 EST
1.6.0_35
也许这不是使用日历的正确方法,但在下一小时(或前一小时)运行相同的测试可以正常工作。这是JVM问题吗?
谢谢