我看到一些行为,我不使用JavaScript日期对象和DST过渡理解。如果我执行在Chrome的JavaScript控制台以下

var date = new Date(1268535600000); //2010-03-14T03:00:00.000Z (21:00 03-13 America/Chicago) 
for(var i = 1; i <= 12; i++)
{   
    var time = date.getHours();
    console.log(time)
    console.log(date)
    date.setHours(date.getHours() + 1);         
}

输出:

21
Sat Mar 13 2010 21:00:00 GMT-0600 (Central Standard Time)
22
Sat Mar 13 2010 22:00:00 GMT-0600 (Central Standard Time)
23
Sat Mar 13 2010 23:00:00 GMT-0600 (Central Standard Time)
0
Sun Mar 14 2010 00:00:00 GMT-0600 (Central Standard Time)
1
Sun Mar 14 2010 01:00:00 GMT-0600 (Central Standard Time)
1
Sun Mar 14 2010 01:00:00 GMT-0600 (Central Standard Time)
1
Sun Mar 14 2010 01:00:00 GMT-0600 (Central Standard Time)
1
Sun Mar 14 2010 01:00:00 GMT-0600 (Central Standard Time)
1
Sun Mar 14 2010 01:00:00 GMT-0600 (Central Standard Time)
1
Sun Mar 14 2010 01:00:00 GMT-0600 (Central Standard Time)
1
Sun Mar 14 2010 01:00:00 GMT-0600 (Central Standard Time)
1
Sun Mar 14 2010 01:00:00 GMT-0600 (Central Standard Time)

然而,改变的最后一行for循环

date = new Date(date.getTime() + 3600000)   

产生输出我与在过渡跳过小时期望:

21
Sat Mar 13 2010 21:00:00 GMT-0600 (Central Standard Time)
22
Sat Mar 13 2010 22:00:00 GMT-0600 (Central Standard Time)
23
Sat Mar 13 2010 23:00:00 GMT-0600 (Central Standard Time)
0
Sun Mar 14 2010 00:00:00 GMT-0600 (Central Standard Time)
1
Sun Mar 14 2010 01:00:00 GMT-0600 (Central Standard Time)
3
Sun Mar 14 2010 03:00:00 GMT-0500 (Central Daylight Time)
4
Sun Mar 14 2010 04:00:00 GMT-0500 (Central Daylight Time)
5
Sun Mar 14 2010 05:00:00 GMT-0500 (Central Daylight Time)
6
Sun Mar 14 2010 06:00:00 GMT-0500 (Central Daylight Time)
7
Sun Mar 14 2010 07:00:00 GMT-0500 (Central Daylight Time)
8
Sun Mar 14 2010 08:00:00 GMT-0500 (Central Daylight Time)
9
Sun Mar 14 2010 09:00:00 GMT-0500 (Central Daylight Time)

这是什么原因的第一种方法不起作用?

编辑: 此外,用一个重复小时DST转换似乎只是忽略与第一种方法复制的时间: 另一件事是,如果我用一个重复小时DST转换尝试,它只是似乎忽略重复的时间:

Sun Nov 07 2010 00:00:00 GMT-0500 (Central Daylight Time)
Sun Nov 07 2010 01:00:00 GMT-0600 (Central Standard Time)
Sun Nov 07 2010 02:00:00 GMT-0600 (Central Standard Time)

但是,正确地处理与第二种方法中的重复小时。

有帮助吗?

解决方案

也许这是一个错误。你有没有试过在多个浏览器?

否则,我想,既然你要的时间设置为不存在的时候,它拒绝的变化。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top