码迷,mamicode.com
首页 > 其他好文 > 详细

关于setMonth中的bug

时间:2014-11-02 00:31:55      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:ar   sp   on   问题   bs   ad   时间   new   js   

    想到下个周末要去拓展,没时间更新博文,今天晚上就在写一篇吧。昨天是31号,这个日期有点特殊,公司平台的签到也出现了问题,这个问题其实半年前已经出现了,当初看了下源码,没看出个所以然,然后就放着没去管它,最近公司平台的积分商城准备上线了,签到的积分也有用了,那么这个bug不解决也不行了。

    说了那么多大家可能还不知道什么问题吧。文采不好请见谅哈。大家应该都知道setMonth吧。设置月份。下面来看一个例子:

    var taday = new Date();

    taday.setMonth(taday.getMonth()+1);

    alert(taday.getMonth());

    现在是11月1号,那么出来的结果大家都应该很清楚是11(月份是从0开始的,),但如果把电脑的时间设置成10月31号,得出来的结果会是10吗?试过的应该知道他不会打印出10.而是打印出11,为什么会这样呢?原因就在于js计算的时候把一个月计算为30天,多出的一天自动溢出,算到下个月,也就是变成了11月,再加1就变成了12月那么打印出来就变成了11。怎么解决这个问题了,很显然,既然没有js里没有31号,那么我们就该一下日期,设置成1号,那么时间就不会溢出了。

    var taday = new Date();

    taday.setData(1);

    taday.setMonth(taday.getMonth()+1);

    alert(taday.getMonth());

这样就解决了setMonth在31号出现的问题。这个问题昨天弄了一整天终于明白了,其实基本上的时间都是看逻辑,看来看去都没问题,最后才想到会不会是setMonth的问题,打印出来后发现果然是这个问题,白白浪费了那么多时间,想想都不值,要是早知道这个问题就不会花这么多冤枉的时间了。

关于setMonth中的bug

标签:ar   sp   on   问题   bs   ad   时间   new   js   

原文地址:http://www.cnblogs.com/huangji/p/4067948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!