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

javascript tytrock ⋅ 于 2024-01-05 08:56:19 ⋅ 2093 阅读

今天在写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
    暂无评论~~
    • 请注意单词拼写,以及中英文排版,参考此页
    • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
    • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
    • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
    • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
    Ctrl+Enter