结束DayLight节省时间的问题

时间:2013-05-21 12:53:09

标签: java dst

我正在尝试检查DayLight节省时间,因为我正在使用美国TimeZone。 DST于2013年3月10日凌晨2:00开始在美国开始,并将于2013年11月3日凌晨2:00结束。因此,我们必须在凌晨2:00将时钟转发1小时,当它结束时,必须在凌晨2:00将时钟倒退1小时。我只想查看DST结束时凌晨2点的实际时间。它在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。这里的Dataformated()是用户定义的函数,用于以可读格式查看时间,setCurrentTime()也是用户定义的方法来设置当前时间。任何人都可以帮助我,为什么在凌晨1:59:60时间成为凌晨2点据我所知,它应该是凌晨1点而已?

1 个答案:

答案 0 :(得分:0)

以下代码显示从PDT到PST的时区更改

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()));
}

输出:

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