Javascript 这个月错了

Javascript 这个月错了,javascript,date,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());

请有人告诉我,如果月份的值高于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代码在这里-

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


将日期设置为10月31日,添加一个月,使之成为11月31日,因为有30天的时间将日期移到12月1日。

因为每个月不存在31天,所以额外的天数将添加到下一个月


将日期设置为10月31日,添加一个月,使之成为11月31日,因为有30天的时间将日期移到12月1日。

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

在某些月份,天数少于31天,因此,下个月会增加额外的天数,这与该月将日期转换到下个月第一天的天数有关。 文件中提到:

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


这与当月将日期转换到下个月第一天的天数有关。 文件中提到:

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


在10月31日创建日期对象,然后将月份设置为11月=10!,如果没有31天,它将切换到下个月的1日12月1日。

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

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

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

这取决于当前日期。您将日期初始化为现在的新日期,今天是10月31日

如果Date对象上的日期是31日,并且您调用setMonth,则在少于31天的月份内,额外的天数将转入下一个月。如果你试图设定月1,它将意味着2月31日,所以你得到3月3日


为避免此问题,您可以将第二个参数传递给setMonth,它是要设置的日期,例如dd.setMonth10,30 Nov 30。

它取决于当前日期。您将日期初始化为现在的新日期,今天是10月31日

如果Date对象上的日期是31日,并且您调用setMonth,则在少于31天的月份内,额外的天数将转入下一个月。如果你试图设定月1,它将意味着2月31日,所以你得到3月3日


为了避免这个问题,您可以将第二个参数传递给setMonth,它是要设置的日期,例如dd.setMonth10,30 Nov 30。

这是因为这个月有31天,所以当前是31天。没有11月31日;因为这个月有31天,所以现在是31天。没有11月31日;