0

我有一个.xlsx文件,其中有一个包含日期的表格。当我将表格读入 javascript(使用 xlsx nodejs 包)时,日期被格式化为数字。我想将这些数字转换为日期。例如,数字 43527 应该是日期 13/03/2019。我已经尝试过new Date(43527*60*60*24*1000),但这给出了错误的答案2089-03-04T00:00:00.000Z

4

1 回答 1

0

Excel 使用 OLE 自动化日期 (OADate) 在内部存储日期。

基本 OLE 自动化日期是 1899 年 12 月 30 日午夜。OLE 自动化日期以浮点数形式实现,其整数部分是 1899 年 12 月 30 日午夜之前或之后的天数,其小数部分表示当天的时间除以 24。 [ https://docs.microsoft.com/en-us/dotnet/api/system.datetime.tooadate?view=netcore-3.1#remarks]

在转换为毫秒之前,您需要减去 25,569,即 1899 年 12 月 30 日到 1970 年 1 月 1 日之间的天数。

要转换日期:

var excelDate = 43527;
var parsedDate = new Date((excelDate - 25569) * 86400 * 1000)).toISOString();

如此处所述,使用 Javascript 将 Excel 日期序列号转换为日期

于 2020-05-19T16:58:51.753 回答