网站地图    收藏   

主页 > 前端 > javascript >

javascript Date对象setMonth方法的bug

来源:自学PHP网    时间:2023-01-29 13:43 作者: 阅读:

[导读] 本文章来给大家详细一下关于javascript Date对象setMonth方法的bug与解决办法,各位朋友可参考。...

其实耶谈不上什么BUG,只是JS Date对象对溢出时间进行了自己的处理。

首先把你的系统时间设为2013年1月31号,这一步很重要,不然可能不会发生这个BUG,然后执行下面的代码


var t = new Date();
t.getMonth(); //输出0,现在获取的是正确的值,因为getMonth是从0开始索引的
t.setMonth(3); //设置月份为4月
t.getMonth(); //输出4,这里本应该输出3的var t = new Date();
t.getMonth(); //输出0,现在获取的是正确的值,因为getMonth是从0开始索引的
t.setMonth(3); //设置月份为4月
t.getMonth(); //输出4,

这里本应该输出3的你会发现,你明明设置了Month值为3,但getMonth时候却输出4。此时,你可能会比较疑惑。我们再来看看现在的时间


console.log(t); 
//Wed May 01 2013 11:47:31 GMT+0800 (CST)console.log(t); 
//Wed May 01 2013 11:47:31 GMT+0800 (CST)setMonth(3)

指定设置日期到4月份,但4月份只有30天,此时的时间是2013-04-31,但4月并没有31天。所以js对溢出日期进行了处理,自动将月份设到5月1号


针对这个问题也很好解决,只要在setMonth之前把日期设置到每月都有的日期,1-28都可以。


var t = new Date();
t.setDate(1);
t.setMonth(3);
t.getMonth();//输出3


自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论