趣闻一记

100 阅读1分钟

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年是个平年