1、5位数字转化成yyyy/mm/dd
要考虑闰年的小细节
// 输入数字转成日期(5位,excel表格日期),默认转换成YYYY-MM-DD
export function numberToDate(number, format) {
if (number != undefined) {
let date = new Date((number - 1) * 24 * 3600000 + 1);
date.setYear(date.getFullYear() - 70);
const Y = date.getFullYear() + '';
const dateRel =
(Y % 4 === 0 && Y % 100 !== 0) || Y % 400 == 0
? new Date((number - 2) * 24 * 3600000 + 1)
: new Date((number - 1) * 24 * 3600000 + 1);
dateRel.setYear(date.getFullYear() - 70);
const M = (dateRel.getMonth() + 1 < 10 ? '0' + (dateRel.getMonth() + 1) : dateRel.getMonth() + 1) + '';
const D = (dateRel.getDate() < 10 ? '0' + dateRel.getDate() : dateRel.getDate()) + '';
if (format && format.length == 1) {
return Y + format + M + format + D;
} else {
return Y + '-' + M + '-' + D;
}
} else {
return undefined;
}
}
2、带精度的5位数字转化成yyyy/mm/dd hh:mm:ss
function ExcelDateToJSDate(serial) {
var utc_days = Math.floor(serial - 25569);
var utc_value = utc_days * 86400;
var date_info = new Date(utc_value * 1000);
var fractional_day = serial - Math.floor(serial) + 0.0000001;
var total_seconds = Math.floor(86400 * fractional_day);
var seconds = total_seconds % 60;
total_seconds -= seconds;
var hours = Math.floor(total_seconds / (60 * 60));
var minutes = Math.floor(total_seconds / 60) % 60;
return new Date(date_info.getFullYear(), date_info.getMonth(), date_info.getDate(), hours, minutes, seconds);
}
ExcelDateToJSDate(44988.916666666664)
// 获取到的是 Fri Mar 03 2023 22:00:00 GMT+0800 (中国标准时间)
参考网站:
https://blog.csdn.net/vayne_1/article/details/129748002