解决 js excel转日期 time.getDate()-1 会少一天的问题;
excel导入表格,日期发现少一天。关键问题在于要区分闰年与平年;
//js 读取EXCEL中的日期类型时,需要日期转换
//excel读取2018/01/01这种时间格式是会将它装换成数字类似于46254.1545151415 numb是传过来的整数数字
excelFormatDate(numb) {
const time = new Date((numb - 1) * 24 * 3600000 + 1);
time.setYear(time.getFullYear() - 70);
const year = time.getFullYear() + "";
const month = time.getMonth() + 1 + "";
let date = time.getDate() + "";
// if ( this.leapyear(year) ) {
// //如果是闰年
// date = time.getDate() - 1 + "";
// }
if ( !this.leapyear(year) && year!=='2023') { //2023年比较特殊
//如果是平年 20231227
date = time.getDate() - 1 + "";
}
return (
year +
"-" +
(month < 10 ? "0" + month : month) +
"-" +
(date < 10 ? "0" + date : date)
);
},
//区分闰年与平年
leapyear(year) {
var flag = false;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
flag = true;
}
return flag;
},
之前写的是闰年就 -1 天,但是2024发现有问题;
经过大量数据导入测试
1月12日
2020 闰年 12日
2021 平年 13日
2022 平年 13日
2023 平年 12日 是闰年,但有闰二月
2024 闰年 12日
2025 平年 13日
2028 闰年 12日
可以发现2023年比较特殊,所有的平年都会多1天,但是2023年刚刚好