Javascript getUTCMonth()返回12月份的0?
我这里的小提琴在12月份的时候是0Javascript getUTCMonth()返回12月份的0?,javascript,Javascript,我这里的小提琴在12月份的时候是0 为什么会这样?日期对象中的12月是11日。您必须减去1才能使其成为0索引 您是否注意到它打印了该年度的2012?问题是它使用了一个以0为基础的月份,所以它认为今年的12月实际上是明年的第0个月。换句话说,0是一月,11是十二月,所以12是下一个一月 您需要从人类可读的月份中减去1: var d = new Date(exploded[0], exploded[1] - 1, exploded[2]); 如果我将程序更改为: var exploded = "
为什么会这样?日期对象中的12月是11日。您必须减去1才能使其成为0索引
您是否注意到它打印了该年度的
2012
?问题是它使用了一个以0为基础的月份,所以它认为今年的12月实际上是明年的第0个月。换句话说,0是一月,11是十二月,所以12是下一个一月
您需要从人类可读的月份中减去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
不,这是另一种方式:您正在定义日期,就好像它是在一月
见:
月份-表示月份的整数值,从1月的0开始到12月的11日
您提供了12
,因此它被视为0
(一月)
如果您需要证明,请参阅。这是返回的2011年11月11日24,这也是错误的:/infact如果我修改它,即使只是toString()也是错误的failing@Baconbeastnz这是因为
getUTCMonth
也是0-11。试试看:“month”+(d.getUTCMonth()+1)
你应该得到2011年month11天25
。我将投票支持你的答案,因为你指出的问题与我的答案相同+谢谢!!!天哪,我是个迟钝的人,而且,我注意到它输出的是24日而不是25日,这是造成时间戳是00:00的原因吗?@Baconbeastnz:我相信这个具体问题是以下原因造成的:您创建的日期是当地时间,但您输出的是UTC日。看见有帮助吗?@Baconbeastnz:基本上你在东半球的某个地方,因为UTC时间实际上更早(如果你可以这么说的话)。哪个混蛋决定将月份设为空,而世界其他地方则称一月为第一个月。。。只是懒惰?或者故意制造混乱/错误。。感谢您的澄清:-)我将投票支持您的答案,因为它指向了正确的方向(如@Gabe的答案和我的答案),但我不会这样做,因为您引用的信息来源。请参阅详细解释和原因。不,我相信不是:)请参阅和-他们中没有一个真正提到new Date()
应该给出从0
开始的月份编号,一月(和11
十二月)。您提供的链接只提到了getUTCMonth()
的正确值,而不是日期对象的构造函数。该链接甚至有var month=新数组(12)代码>在其示例中,这不是一个好的实践。这些学校充满了不准确之处:(
var exploded = "2011-12-25".split('-');
var d = new Date(exploded[0], exploded[1] - 1, exploded[2]);
document.write(d.toString());