将excel DATEVALUE转换为javascript日期

时间:2015-07-10 14:18:16

标签: javascript php excel date

我正在使用php和JavaScript阅读excel数据。将结果存储在变量中并在页面上显示。

简单的代码示例:

var yearend = "< ? php echo ($connection->sheets[0]["cells"][2][5]); ? >";

这适用于带数字的文字和字段。但是当我将单元格格式化为&#34; Date&#34;它返回值,例如。

Excel字段为:31-Dec-2015 - JavaScript返回值:40542

我知道这是MS DATEVALUE格式。

但我需要使用JavaScript将其转换为日期,因此它仅显示31-Dec-201531 December 2015

简而言之:

从Excel 40542到JavaScript 31 December 2015

另外,我只需要如上所述,没有尾随时间和位置,所以删除:

00:00:00 00:00 GMT

是否可以将日期修改为+1天或-1天?

3 个答案:

答案 0 :(得分:0)

//Convert Excel dates into JS date objects

//@param excelDate {Number}
//@return {Date}

function getJsDateFromExcel(excelDate) {

 // JavaScript dates can be constructed by passing milliseconds
 // since the Unix epoch (January 1, 1970) example: new Date(12312512312);

 // 1. Subtract number of days between Jan 1, 1900 and Jan 1, 1970, plus 1  (Google "excel leap year bug")             
// 2. Convert to milliseconds.

 return new Date((excelDate - (25567 + 1))*86400*1000);

 }

答案 1 :(得分:0)

使用以下php函数将datevalue转换为php时间戳。然后,您可以使用标准日期函数进行格式化,但希望

function xl2timestamp($xl_date){
    return ($xl_date - 25569) * 86400;
}

答案 2 :(得分:0)

尝试

toDate(serialDate, time = false) {
    let locale = navigator.language;
    let offset = new Date(0).getTimezoneOffset();
    let date = new Date(0, 0, serialDate, 0, -offset, 0);
    if (time) {
        return serialDate.toLocaleTimeString(locale)
    }
    return serialDate.toLocaleDateString(locale)
}