setMonth()这个api貌似有bug?

问题描述

var event = new Date();
event.setMonth(1);
console.log(event);//设置日期为3月第一天,不是预期的2月最后一天
event.setMonth(2);
console.log(event);//设置日期为3月最后一天
event.setMonth(3);
console.log(event);//设置日期为4月最后一天
event.setMonth(4);
console.log(event);//设置日期为5月最后一天

本以为是chrome的bug,但发现ie也是这样的结果。
于是我去查看了MDN,并没有做什么特殊的说明,目前也不清楚是bug还是我理解有误。
目前在使用的iview使用这个API导致了日期组件出错,才发现的,显然iview的开发者也不知道。
看看各位大佬有什么头绪?

阅读 2.5k
2 个回答

setMonth 改变月份,日期使用原来。今天是 29 号,二月没有29号,就变成了 3月1日 了。

不是BUG,Date会根据设置的月份跟日期自动换算,你没有setDate,只设置月会出现这样的情况,因为今天是29日,setMonth(1) => 2月29日然后今年二月只有28天自动换算后 2月29日 => 3月1日

后面的换算日期会变更也是同理

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏