请有人告诉我,如果它的值高于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/
答案 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日)。