一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

javascript Date对象setMonth方法的bug

时间:2013-08-18 编辑:简简单单 来源:一聚教程网

其实耶谈不上什么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

热门栏目