Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript getUTCMonth()返回12月份的0?_Javascript - Fatal编程技术网

Javascript getUTCMonth()返回12月份的0?

Javascript 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月份的时候是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 = "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());