在PHP中从Excel工作表获取格式化的日期单元格

在PHP中从Excel工作表获取格式化的日期单元格,php,excel,Php,Excel,我使用excel Reader阅读excel工作表,现在我无法显示单元格信息,因为它已格式化为单元格。它是一个数据单元 在php中,如何在excel工作表中显示日期 在Excel中,单元格格式如下:1956年4月10日日期 在php中,它现在显示为:20555一般形式 如何在php中以日期的形式显示?20555是日期的Excel表示形式。它不是一般形式,与unix时间戳类似。我知道这是1900年1月1日以来的天数 所以你需要一个函数来掩盖这个。我认为类似于以下的方法可以奏效: function

我使用excel Reader阅读excel工作表,现在我无法显示单元格信息,因为它已格式化为单元格。它是一个数据单元

在php中,如何在excel工作表中显示日期

在Excel中,单元格格式如下:1956年4月10日日期

在php中,它现在显示为:20555一般形式

如何在php中以日期的形式显示?

20555是日期的Excel表示形式。它不是一般形式,与unix时间戳类似。我知道这是1900年1月1日以来的天数

所以你需要一个函数来掩盖这个。我认为类似于以下的方法可以奏效:

function convertExcelDateNumberToUnixTimestamp($dateNumber){
    /*     Jan 1 1900  + [number of days in seconds] */
    return -2208988800 + (24 * 60 * 60 * $dateNumber);
}

function formatExcelDateNumberToDate($dateNumber) {
    /*Where 'l jS \of F Y' is whatever format you want:*/
    return date('l jS \of F Y', convertExcelDateNumberToUnixTimestamp($dateNumber);
}

使用第一个函数,您可以使用响应构造DateTime对象

Excel将日期和时间存储为一个数字,表示自1900年1月0日以来的天数,其中包含24小时工作日的小数部分

至于解决方案,您可以使用以下代码段

$excel_date = 20555; // Serialized form of 10-Apr-1956
$processDate = $excel_date - 25569;
$dateVal = strtotime("+$processDate days", mktime(0,0,0,1,1,1970));
echo date('d M Y', $dateVal);