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
  • 相关阅读:
    迭代器
    LinkedList存储一副扑克牌,实现洗牌功能。
    线程
    堆栈、队列
    路由-第7集
    javascript中split字符串分割函数
    this的用法
    什么是AOP面向切面编程
    Servlet与JSP的区别
    堆(heap)、栈(stack)、方法区(method)
  • 原文地址:https://www.cnblogs.com/willian/p/2891656.html
Copyright © 2011-2022 走看看