每天写着应用的代码,就好像 robot 一样.以至于又忙又没有研究一些东西又没写博客.
今天发现了一个 JS Date 的 bug.终于可以有写的了
bug 描述:
var d = new Date();
在使用 d.setMonth(m) 时,按照预期 d.getMonth() === m,可在某些特殊情况下,d.getMonth() > m, d.getDate() = 1
特殊情况总结:
d.getDate() 大于 m+1 月份的总天数
举例:
var d = new Date(); // 今天是 2013年10月31号
d.setMonth(1); // 设置月份为2月,2月份总天数为28或29,都小于31
d.getMonth(); // d.getMonth() = 2; d 为 2013年3月1号
d.getDate(); // d.getDate() = 1; d 为 2013年3月1号
解决方案:
在 d.setMonth(m) 之前加上 d.setDate(1)
如:
var d = new Date(); // 今天是 2013年10月31号
d.setDate(1);
d.setMonth(1); // 设置月份为2月
var currentMonth = d.getMonth(); // currentMonth 值为1