zoukankan      html  css  js  c++  java
  • javscript Date对象setMonth()方法的诡异bug

    在项目中前几个月写过一个日历组件。结果今天测试部门报告说有bug, 经仔细查看代码,发现调用setMonth这个Date对象的方法时,返回的值不一定是正确的值。

    把你的本地系统日期调整至2013年1月31日,再接着测试以下代码

    var d = new Date();
    d.setMonth(8);
    d.getMonth();//输出9

    你会发现,你明明设置了Month值为8,但getMonth时候却输出9。why?

    查了一个早上bug,才发现是这个方法出问题。。后到stackoverflow上去问了一下,原因如下

    因为本地系统时间是2013-1-31

    setMonth(8)指定设置日期到8月份,但8月份只有30天,并没有31天,所以溢出了。js会自动将月份设到下一个月去。。

    坑爹啊。解决方案是在调用setMonth之前先调用setDate(1)设置一下日期,设置一个比较小的日期就行比如设到1号。。

    像这样

    var d = new Date();
    d.setDate(1);
    d.setMonth(8);
    d.getMonth();//输出8
  • 相关阅读:
    数据库
    Activity组件
    view,视图组件
    360导航板式
    service音乐播放
    service
    音乐播放器组件
    获取时间字符串
    JDK服务器存储
    数据库_黑名单练习_完善服务广播
  • 原文地址:https://www.cnblogs.com/willian/p/2891656.html
Copyright © 2011-2022 走看看