Javascript getUTCMonth()在12月返回0?

Bac*_*tnz 8 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());
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

Tad*_*eck 10

不,这是另一种方式:您将日期定义为1月份.

请参阅以下文档Date():

month - 表示月份的整数值, 1月的0开始到12月的11.

你提供了12,所以它被视为0(1月).

如果您需要证明,请参阅脚本的修改版本,显示整个日期和时间.


Gab*_*abe 7

你注意到它打印2012了一年吗?问题是它使用的是0月,所以它认为今年的第12个月实际上是明年的第0个月.换句话说,0是1月,11是12月,所以12是明年1月.

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

var d = new Date(exploded[0], exploded[1] - 1, exploded[2]);
Run Code Online (Sandbox Code Playgroud)

如果我将程序更改为:

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

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