【问题标题】:PHPExcel returns a weird date formatPHPExcel 返回一个奇怪的日期格式
【发布时间】: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();

【问题讨论】:

标签: php phpexcel


【解决方案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() 功能来格式化它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2013-02-21
    相关资源
    最近更新 更多