关于java:结束DayLight节省时间的问题

Issues to get end DayLight Saving time

我正在检查夏令时,因为我使用的是美国时区。由于DST于2013年3月10日凌晨2:00开始,将于2013年11月3日凌晨2:00结束。所以我们必须在凌晨2点把钟拨快1个小时,当它结束时,我们必须在凌晨2点把钟拨慢1个小时。我只是想看看DST结束时的实际时间是多少。对于DST的开始,它工作正常,但对于DST的结束,它不工作。以下是我尝试过的代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
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);
     }
}

输出就像:

1
2
3
4
5
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.60EY16.这里,datformated()是用户定义的函数,用于以可读的格式查看时间,setcurrentTime()也是用户定义的方法,用于设置当前时间。有人能帮我解决这个问题吗?据我所知,为什么凌晨1:59:60会变成凌晨2:00,而应该是凌晨1:00?


下面的代码显示了从PDT到PST的时区更改。

1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) throws InterruptedException {
    TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
    DateFormat fmt = new SimpleDateFormat("dd-MM-yy HH:mm:ss zz");

    Calendar cal = Calendar.getInstance();
    cal.set(2013, 10, 03, 0, 59, 59);
    System.out.println(fmt.format(cal.getTime()));

    cal.set(2013, 10, 03, 1, 0, 0);
    System.out.println(fmt.format(cal.getTime()));
}

输出:

1
2
03-11-13 00:59:59 PDT
03-11-13 01:00:00 PST