我正在尝试检查夏令时,因为我使用的是美国时区。美国的 DST 于 2013 年 3 月 10 日凌晨 2:00 开始,并将于 2013 年 11 月 3 日凌晨 2:00 结束。所以我们必须在凌晨 2:00 将时钟提前 1 小时,当它结束时,我们必须在凌晨 2:00 将时钟提前 1 小时。我只是想检查 DST 结束时凌晨 2:00 的实际时间。它在 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?