我的小提琴在12月返回0
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());
为什么会这样?
答案 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索引。