Javascript getUTCMonth()在12月返回0?

时间:2011-12-01 00:55:12

标签: javascript

我的小提琴在12月返回0

http://jsfiddle.net/3CpXz/

var exploded = "2011-12-25".split('-');
var d = new Date(exploded[0], exploded[1], exploded[2]);
document.write("year"+d.getUTCFullYear()+ " month"+d.getUTCMonth()+" day"+d.getUTCDate());

为什么会这样?

3 个答案:

答案 0 :(得分:9)

不,这是另一种方式:您定义的日期就像是在1月份

请参阅the documentation on Date()

  

- 代表月份的整数值,从0开始,从1月到11月为12月。

您提供了12,因此被视为0(1月)。

如果您需要证明,请参阅modified version of the script, showing the whole date and time

答案 1 :(得分:7)

您是否注意到它打印了2012这一年?问题是它使用的是基于0的月份,因此它认为今年的第12个月实际上是明年的第0个月。换句话说,0是1月,11是12月,所以12月是明年1月。

您需要从人类可读的月份中减去1:

var d = new Date(exploded[0], exploded[1] - 1, exploded[2]);

如果我将程序更改为:

var exploded = "2011-12-25".split('-');
var d = new Date(exploded[0], exploded[1] - 1, exploded[2]);
document.write(d.toString());

打印:Sun Dec 25 00:00:00 EST 2011

答案 2 :(得分:2)

12月在日期对象中是11。你必须减去1才能使其成为0索引。

http://www.w3schools.com/jsref/jsref_getutcmonth.asp

相关问题