getMonth 获取UTCMonth 差异结果

bru*_*ida 7 javascript

我在使用 JavaScript date.getMonth() 和 date.getUTCMonth() 时发现结果不一致,但仅限于某些日期。以下示例演示了该问题:

\n\n
<!DOCTYPE html>\n<html>\n<body onload="myFunction()">\n\n<p id="demo">Click the button to display the month</p>\n\n<script type="text/javascript">\nfunction myFunction()\n{\nvar d = new Date(2012, 8, 1);\nvar x = document.getElementById("demo");\nx.innerHTML=d;\nx.innerHTML+=\'<br/>result: \' + d.getMonth();\nx.innerHTML+=\'<br/>result UTC: \' + d.getUTCMonth();\n\n}\n</script>\n\n</body>\n</html>\n
Run Code Online (Sandbox Code Playgroud)\n\n

这个例子的输出是:

\n\n
Sat Sep 01 2012 00:00:00 GMT+0100 (Hora de Ver\xc3\xa3o de GMT)\nresult: 8\nresult UTC: 7\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我将日期更改为 (2012, 2, 1),则输出为:

\n\n
Thu Mar 01 2012 00:00:00 GMT+0000 (Hora padr\xc3\xa3o de GMT)\nresult: 2\nresult UTC: 2\n
Run Code Online (Sandbox Code Playgroud)\n\n

在第一个示例中,getMonth 返回 7,getUTCMonth 返回 8。在第二个示例中,两者返回相同的值 2。

\n\n

有人已经经历过这种情况吗?我来自葡萄牙,我认为这与我的格林尼治标准时间有关,但我不明白为什么会发生这种情况,因为这些示例是在相同的情况下运行的。

\n\n

提前致谢

\n

Ger*_*ton 1

你会发现这是DST差异造成的。