为什么新的Date(1970,0,1).getFullYear()返回1969?

时间:2014-11-03 15:28:42

标签: javascript

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



result.textContent = new Date(1970, 0, 1).getFullYear();

<div id=result></div>
&#13;
&#13;
&#13;


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

2 个答案:

答案 0 :(得分:7)

看起来很像Firefox的SpiderMonkey引擎中的时区错误(很可能在它使用的某个库中);在我的实验中它只影响* nix操作系统,而不影响Windows。 (见下面为什么时区会进入它。)它正在返回

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

......当然,我们(@wilsonpage,我自己以及英国时间的数百万人)不再参加英国夏令时(当我们 夏季时,它是GMT +0100,而不是GMT-0100,因此在任何情况下落后 UTC的本地时间都没有意义。 (旁注:Chrome也显示“BST”,但它有正确的日期/时间。)(美国人的注意事项:你习惯于“xST”意思是“x 标准时间”[相反到“x 日光时间”],但这里BST代表“英国夏令时” - 例如,夏令时。当我们不在夏季时,我们在GMT。)

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

@wilsonpage已经确认他正在使用OS X并且他正在看到我同时(包括“BST”部分)。

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


时区进入它(并且显然会触发错误)的原因是您为该Date constructor版本提供的值被解释为UTC,但getFullYear在本地时间返回其值。 / p>

答案 1 :(得分:0)

我在这里遇到了一个错误:我在都柏林,格林尼治标准时间,但是Date()会告诉我

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

查看时区偏移量。我提前一天(或更好:+00.00减1分钟给出+23.59)。

在Centos 7上的FF31.2.0

我不知道如何克服这个问题:(