2012-01-04 52 views
3

我很确定我做错了什么,但我尽可能简化了我的示例,我不禁感觉像开始/结束在某些年份,javascript的夏令时时间在我的时区是错误的。JavaScript的日期似乎引用了不正确的DST开始/结束日期

我在太平洋时区。现在是太平洋标准时间。当我运行在1989年所有的日期,它说,DST开始于:

Mon Mar 13 1989 00:00:00 GMT-0700 (Pacific Daylight Time) 

,并结束于:

Sun Nov 05 1989 00:00:00 GMT-0700 (Pacific Daylight Time) 

根据所有来源我能找到的(包括维基百科和timeanddate.com) DST本来是要在周日开始,1989年4月2日,周日,10月29日结束,1989年

我加入这里的jsfiddle例如:

http://jsfiddle.net/jzFgM/

这个代码很粗糙,我知道 - 只是想举一个具体的例子。您可能需要在太平洋时区和Windows 7上才能看到结果。它在Chrome,Firefox和IE9中给我提供了相同的“错误”日期。

为什么我会看到这些结果?我认为这是一个简单的误解,但我一直无法查明问题。

回答

1

Date类正在使用由Energy Policy Act of 2005颁布的DST的当前值。见here

该法案通过改变开始和夏令时 结束日期,在2007年开始的时钟设定 提前一小时在3月的第二个星期天修订的1966年统一时间法案(三月在2007年4月1日的第一个星期日,改为 。在十一月(2007年11月4日)的第一个星期日,时钟被拨回 ,相当于 比10月最后一个星期日(2007年10月28日)。

+0

好的,这是有道理的。那么我是否需要自己做出调整以获得正确的日期?似乎有点傻,为什么不将这个功能内置到Javascript中?这与我在服务器端进行正确转换的能力混为一谈。 – user949286 2012-01-04 20:47:03

+0

因为重写历史很有趣? *我们一直在与东亚的战争。* – 2012-01-04 20:59:38

+0

哈哈,没错。我想我应该感谢标准委员会做出这个令人愉快的决定。 – user949286 2012-01-04 23:44:46

相关问题