2020-12-31日,
正当我背起书包,走在摸鱼的路上,
小程序报警群突然爆炸。
火急火燎赶到公司,
一边骂骂咧咧,
一边开始排查bug。
定位后发现,
报错的原因是因为在一处日期计算中,使用了如下代码
isYearAgo(date) { let nowDateStamp = Date.now(); // 当前时间戳 let minDate = new Date(nowDateStamp - (365 * 24 * 60 * 60 * 1000)); // 能修改的最早时间 let minYear = minDate.getFullYear(); let minMonth = this.timeFormat(minDate.getMonth() + 1); let minDay = this.timeFormat(minDate.getDate()); return `${minYear}-${minMonth}-${minDay}` > date; },
这不是一眼就看到了问题,
那365放在那不扎眼睛么?
然后正想看看是谁埋得坑,
三年前,,
那没事了。。。
这个bug也算是藏得很深了。
毕竟4年才一遇呀。。。
备注:
平年闰年计算方法:
const yearDays = nowYear % 4 === 0 && (nowYear % 100 !== 0 || nowYear % 400 === 0) ? 366 : 365;
注意括号!!
举例: 2200年是个平年