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 |