Javascript月错了

时间:2017-10-31 14:42:50

标签: javascript date

请有人告诉我,如果它的值高于9,月份会增加1。代码低于

var dd = new Date();
dd.setFullYear(2017);
dd.setMonth(7);
console.log("Month(Expecting 7, and received 7) = " + dd.getMonth());
dd.setMonth(10);
console.log("Month(Expecting 10, and received 11) = " + dd.getMonth());

Fiddler代码 - https://jsfiddle.net/vzmtp3ua/

6 个答案:

答案 0 :(得分:4)

因为每个月都不存在31天所以额外的天数会被添加到下个月。

将日期设置为10月31日,添加一个月,这样就是11月31日,因为有30天将日期移至12月1日。

答案 1 :(得分:2)

在某些月份,天数会少于31天,因此在下个月会增加额外天数

答案 2 :(得分:1)

这与该月份的天数有关,使日期转移到下个月的第一天。 文档提到了这一点:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMonth

  

每月的当前日期将对此方法的行为产生影响。从概念上讲,它会将当月当天指定的天数添加到指定为参数的新月的第1天,以返回新日期。例如,如果当前值为2016年8月31日,则调用setMonth且值为1将返回2016年3月2日。这是因为2016年2月有29天。

答案 3 :(得分:1)

并非所有月份都有相同的天数(31),因此下一个月将移至下个月

答案 4 :(得分:0)

当您在10月31日创建Date对象,然后将月份设置为11月(= 10!)(没有31天)时,它将切换到下个月的1月(12月1日)。

答案 5 :(得分:0)

它取决于当前日期。您将日期初始化为" now" (new Date()),今天是10月31日。

如果您的日期对象上的日期是31日,并且您致电setMonth(),则额外的天数将持续到下个月,持续时间少于31天。如果你尝试setMonth(1)它将意味着2月31日,所以你得到3月3日。

为避免此问题,您可以传递第二个参数setMonth,这是要设置的日期,例如dd.setMonth(10,30)(11月30日)。