在php中阅读xls日期

use*_*743 5 php date phpexcel

我正在使用php-excel-reader在我的php脚本中读取XLS文件,除了阅读日期外,一切正常.它只返回一个未定义的对象.

  • XLS文件不是在我的计算机上制作的,我不知道它是创建它的女巫版本.
  • 如果我在计算机上打开文件并再次保存,一切正常.(但我显然更愿意避免这样做)
  • 在对php-excel-reader脚本进行一些挖掘之后,我设法获得了它从XLS中提取的值.例如,41397而不是03/05/2013(年/月/日)

几个问题 :

  • 这可以解决吗?
  • 有可能利用41397吗?它是一种已知的日期格式吗?
  • 还有另一个xsl到PHP脚本,这将无需更改任何东西吗?

ban*_*nsi 14

根据excel格式 41397 is 2013-05-03

Excel将日期和时间存储为表示自1900年1月1日以来的天数的数字,加上24小时工作日的小数部分:
ddddd.tttttt.这称为序列日期或序列日期时间.

您可以使用以下代码将数字转换为有效日期

function excelDateToDate($readDate){
    $phpexcepDate = $readDate-25569; //to offset to Unix epoch
    return strtotime("+$phpexcepDate days", mktime(0,0,0,1,1,1970));
}
Run Code Online (Sandbox Code Playgroud)

php-excel-reader 应该这样做,但不知道它为什么不这样做.

您可以在这里获得有关excel如何存储日期的更多信息(不是像msdn这样的真实参考)

编辑:检查PHPExcel,看起来像静态函数PHPExcel_Shared_Date::ExcelToPHP($dateValue = 0, $adjustToTimezone = FALSE, $timezone = NULL)这样做.