我有以下javascript代码,可以将日期(字符串)转换为Microsoft Excel中使用的日期序列号:
function JSDateToExcelDate(inDate) {
var returnDateTime = 25569.0 + ((inDate.getTime() - (inDate.getTimezoneOffset() * 60 * 1000)) / (1000 * 60 * 60 * 24));
return returnDateTime.toString().substr(0,5);
}
那么,我该怎么做呢?(这意味着将Microsoft Excel中使用的日期序列号转换为日期字符串的Javascript代码?
发布于 2013-04-26 17:55:29
试试这个:
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);
}
为您定制:)
发布于 2014-03-12 21:23:32
我为你写了一句话:
function ExcelDateToJSDate(date) {
return new Date(Math.round((date - 25569)*86400*1000));
}
发布于 2018-10-02 06:38:42
虽然我在这个讨论开始几年后偶然发现了这个问题,但我可能对最初的问题有一个更简单的解决方案--这里是我最终将Excel“自1899-12-30以来的天数”转换为我需要的JS日期的方法:
var exdate = 33970; // represents Jan 1, 1993
var e0date = new Date(0); // epoch "zero" date
var offset = e0date.getTimezoneOffset(); // tz offset in min
// calculate Excel xxx days later, with local tz offset
var jsdate = new Date(0, 0, exdate-1, 0, -offset, 0);
jsdate.toJSON() => '1993-01-01T00:00:00.000Z'
本质上,它只是构建一个新的Date对象,通过添加Excel天数(从1开始),然后通过负的本地时区偏移量调整分钟数来计算该对象。
https://stackoverflow.com/questions/16229494
复制相似问题