Rock笔记
~/rocknotes/articles/390.md article
// article · javascript

JavaScript日期设置月份 setMonth 会出现顺延到下一个月的情况解决

今天在写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日



回复// 0 replies

最新回复 ↓
// 暂无回复

回复功能沿用原详情页:前往原页面参与讨论 →