标题XLSX读取xlxs文件时,日期2023/2/8转为了44965,把44965转为年月日格式
在Excel中,数字 44965
实际上代表的是Excel内部存储日期的一种数值格式,它基于一个被称为"Excel日期系统"的计数体系。从1900年1月1日(或对于包含1900年2月29日错误的版本是从1900年3月1日开始计算)算起的天数。每个日期都对应一个连续的序列号。
所以,当你看到 44965
这样的数值时,它表示的是从1900年1月1日之后经过的天数。转换回日期格式,我们可以计算出这个数值对应的日期是2023年2月8日。这是因为:
- 1900年1月1日对应的序号是1
- 加上44965天后即为2023年2月8日
这种存储方式有助于Excel高效地处理日期和时间,并进行各种日期相关的计算和格式化。如果你在JavaScript或者使用类似xlsx
这样的库读取Excel文件时获取到了这样的数字,你需要通过相应的API或公式将其转换回可读的日期格式。
javascript
export function excelDateToJSDate(serial: number) {
const utc_days = Math.floor(serial - 25569);
const utc_value = utc_days * 86400;
const date_info = new Date(utc_value * 1000);
const fractional_day = serial - Math.floor(serial) + 0.0000001;
let total_seconds = Math.floor(86400 * fractional_day);
const seconds = total_seconds % 60;
total_seconds -= seconds;
const hours = Math.floor(total_seconds / (60 * 60));
const minutes = Math.floor(total_seconds / 60) % 60;
return new Date(date_info.getFullYear(), date_info.getMonth(), date_info.getDate(), hours, minutes, seconds);
}