说明:
我正在 Angular项目( npm install xlsx )上使用 XLSX 生成Excel文件,但是我遇到了显示问题一个确切的日期。如果我尝试使用JavaScript日期对象,它将以某种方式失去准确性并显示错误的日期。如果我尝试使用与“ dd / mm / yyyy”相对应的字符串,它也会失败。
我发现要使Microsoft Excel具有dd / mm / yyyy格式的精确日期,您需要使用遵循模式的Excel Serial Format。
以下是这种格式的一些示例:
*您可以在Microsoft Excel上尝试检查更多示例。
上面是我需要的功能的原型,它将接收一个日期(dd / mm / yyyy)并返回等效的序列号。
private JSDateToExcelDate(inDate) {
if(inDate != null) {
//TO DO
}
}
其他信息:
xlsx框架可以修改任何告诉其值类型将为Date的单元格。考虑到这一点,我需要的只是序列号格式的日期。
更新11/06/2019-20:14
我找到了具有以下功能的解决方案,该功能可提供所需的电话号码。我部分解决了它,因为框架XLSX可能正在更改值,因为我得到的输出为“ 31/12/1969 21:00:16”,我发现这是默认输出,原因是日期无效。 (我已经在Angular Project上创建了该函数,因此它可能包含特定的语法)
private JSDateToExcelDate(date) {
var temp: any;
temp = new Date(date);
if(date != "NaN" && date != "Invalid Date") {
var days = Math.round((temp.setHours(0,0,0,0) - <any>new Date(1899, 11, 30)) / 8.64e7);
let ret:any = (days).toFixed(10);
if(!isNaN(ret)) {
return ret;
}
}
return '';
}
答案 0 :(得分:0)
var start = new Date('1900-01-01')
return (inDate - start)/(1000 * 60 * 60 * 24);