🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

JavaScript Date.setMonth bug

每天写着应用的代码,就好像 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







欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

留下你的脚步