2014-11-03 209 views
6

有人可以解释为什么new Date(1970, 0 ,1).getFullYear()返回1969而不是1970为什么new Date(1970,0,1).getFullYear()返回1969?

result.textContent = new Date(1970, 0, 1).getFullYear();
<div id=result></div>


提起Firefox的错误:https://bugzilla.mozilla.org/show_bug.cgi?id=1093130

+3

它在IE中会返回1970年我。 – Sobieck 2014-11-03 15:29:42

+8

返回1970年的Chrome 38 – 2014-11-03 15:30:49

+1

1970年我在Chrome(OSX )**,但在Firefox的'1969'** – Moob 2014-11-03 15:31:10

回答

7

看起来很像在Firefox中的SpiderMonkey的引擎时区的bug(最有可能在它使用了一些库);在我的实验中,它只影响* nix操作系统,而不是Windows。 (见下面为什么时区进入它。)它返回

Wed Dec 31 1969 23:00:00 GMT+0000 (BST)

...的时候当然,我们(在英国时间@wilsonpage,我和其他数百万)是不是在英国夏令时间了(当我们在夏季是时,它是GMT + 0100,而不是GMT-0100,所以在任何情况下,当地时间在后面 UTC都没有意义)。 (注意:Chrome也显示“BST”,但它具有正确的日期/时间。)(美国人的注意事项:您习惯了“xST”意思是“x 标准时间”[与“x daylight时间“],但在这里,BST表示‘英国夏令时间’  —例如,夏令时。当我们不是在夏天的时候,我们是在格林尼治标准时间)。

我看到在Firefox 30这种行为在同一系统上的Linux Mint 16(显然是最新的软件包系统)和Firefox 33(仅从Mozilla直接下载并安装);我做不是在Windows 8.1上的Firefox 33上看到它。

@wilsonpage已确认他使用的是OS X,并且他看到了我的同一时间(包括“BST”部分)。

result.textContent = new Date(1970, 0, 1).toString();
<div id=result></div>


原因时区进入它(显然引发的bug)是你给的值,该Date constructor的版本被解释为UTC,但getFullYear返回它的值在当地时间。

0

我遇到了一个错误这里也:我在都柏林,GMT时间,但日期()会告诉我

"Fri Nov 07 2014 16:17:25 GMT+2359 (GMT)" 

看的时区偏移。我有一天(或更好:+00.00减1分钟+23.59)。在CentOS 7

FF31.2.0我不知道如何解决这个问题:(