我有一个.xlsx
文件,该文件的表包含日期。当我将表格读入javascript(带有xlsx nodejs包)时,日期被格式化为数字。我想将这些数字转换为日期。例如,数字43527应该是日期13/03/2019。我已经尝试过new Date(43527*60*60*24*1000)
,但这给出了2089-03-04T00:00:00.000Z
的错误答案。
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();
如此处提到的Converting Excel Date Serial Number to Date using Javascript