今天在写js设置日期月份时发现一个问题,例如现在是1月31日,当我使用date.setMonth(date.getMonth()+1)时,发现得到的月份是3月份
var date = new Date();//当前日期为1月31日 date.setMonth(date.getMonth()+1); console.log(date);//此日期为3月份
经查,发现javascript有这个一个说明:
当前月份是31天,而设置的月份小于31天,就会把日期顺延。
在setMonth的说明中是这样的:dateObj.setMonth(numMonth[,dateVal]);
参数dateObj必选项。任意Date对象。numMonth必须项,一个等于月份值得数值。dateVal可选项。一个代表日期的数值。如果没有提供此参数,那么将使用通过调用getDate方法而得到的数值。
所以从对dateVal参数的说明可以看出,在设置月份的同时,使用getDate获取日期,并使用得到的日期值设置了日期。于是就会发生月份顺延的情况。
由此可知,当现在是1月31日时,如果setMonth(1)的时候,月份虽然会变成了2月份,但日还是使用当前的31日,而2月份是没有31天的,于是会顺延到3月份。所以,可以在setMonth时设置一下第二个参数指定日期,不让其顺延:
date.setMonth(1,1);//指定为2月1日
本帖已被设为精华帖!