getMonth getUTCMonth不同的结果

时间:2012-08-07 13:39:42

标签: javascript

使用JavaScript date.getMonth()和date.getUTCMonth()时,我发现并且结果不一致,但只有一些日期。以下示例演示了此问题:

<!DOCTYPE html>
<html>
<body onload="myFunction()">

<p id="demo">Click the button to display the month</p>

<script type="text/javascript">
function myFunction()
{
var d = new Date(2012, 8, 1);
var x = document.getElementById("demo");
x.innerHTML=d;
x.innerHTML+='<br/>result: ' + d.getMonth();
x.innerHTML+='<br/>result UTC: ' + d.getUTCMonth();

}
</script>

</body>
</html>

此示例的输出为:

Sat Sep 01 2012 00:00:00 GMT+0100 (Hora de Verão de GMT)
result: 8
result UTC: 7

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

Thu Mar 01 2012 00:00:00 GMT+0000 (Hora padrão de GMT)
result: 2
result UTC: 2

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

有没有人经历过这种情况?我来自葡萄牙,我认为它与我的GMT有关,但我不明白为什么会这样,因为这些例子在同样的情况下运行。

谢谢你的进步

2 个答案:

答案 0 :(得分:1)

你会发现它是由DST差异引起的。

答案 1 :(得分:0)

通用时区日期方法用于处理UTC日期

日期返回0到11之间的月份 新日期(1976,01,18)- 1976年2月18日星期三00:00:00 GMT + 0530(印度标准时间)

* getUTCDate返回与getDate()相同,但返回基于世界时区的日期,与月份和年份相同

new Date(1976,01,18).getUTCDate()- 17

new Date(1976,01,18).getDate()- 18

new Date(1976,02,18).getUTCMonth()- 2

new Date(1976,01,18).getMonth()- 1

new Date(1976,01,18).getYear()- 76

new Date(1976,01,18).getUTCFullYear()- 1976

new Date(1976,01,18).getFullYear()- 1976