PHPExcel 返回一个奇怪的日期格式

Posted

技术标签:

【中文标题】PHPExcel 返回一个奇怪的日期格式【英文标题】:PHPExcel returns a weird date format 【发布时间】:2015-03-20 19:29:06 【问题描述】:

当我在 LibreOffice Calc 中显示为 02/19/2015 23:59:40 的行/列上使用 phpExcel 的 getFormattedValue() 时,我会返回 42067.458524537。如何将其转换为 02/19/2015 23:59:40

我的PHP代码如下:

<?php
include('/path/to/PHPExcel.php');

$filePath = 'filename.xlsx';

$inputFileType = PHPExcel_IOFactory::identify($filePath);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);

$excel = $objReader->load($filePath);
$worksheet = $excel->getSheet();

echo $worksheet->getCellByColumnAndRow(3, 4)->getFormattedValue();

【问题讨论】:

你见过吗:***.com/questions/11172644/…? 我没有 - 这是一个非常有用的链接 - 谢谢! 【参考方案1】:

MS Excel 将日期存储为序列化值,这是一个实数,它是自 1900 年 1 月 1 日或 1904 年 12 月 1 日基线以来的天数,具体取决于电子表格是使用 Windows 1900 日历创建还是Mac 1904 日历。

42067.458524537 的序列化值对应于 2015 年 3 月 4 日 11:00:17 的日期(使用 Windows 1900 日历)

如果您使用过 PHPExcel 的 getFormattedValue() 方法,那么它应该根据应用于该单元格的数字格式掩码将序列化值转换为格式化的日期/时间字符串......假设您没有设置 loadDataOnly加载电子表格文件时。

如果您需要将原始 MS Excel 序列化值转换为 unix 时间戳或 PHP DateTime 对象,则可以分别使用 PHPExcel_Shared_Date::ExcelToPHP()PHPExcel_Shared_Date::ExcelToPHPObject() 方法;然后使用原生 PHP date()DateTime::format() 功能来格式化它。

【讨论】:

以上是关于PHPExcel 返回一个奇怪的日期格式的主要内容,如果未能解决你的问题,请参考以下文章

PHPExcel读取和设置日期格式

如何使用 PHPExcel 库读取 excel 一个单元格日期(DD/MM/YYYY)值并将日期格式转换为(M/D/YYYY)

phpexcel

Laravel PHPExcel 将日期转换为双精度

日期格式化程序不从应用程序中的字符串返回日期虽然在操场上工作

Ajax 请求日期数据格式不对