【发布时间】:2012-09-04 01:59:10
【问题描述】:
嗨~我正在使用 PHPExcel 1.7.7 来读取 XLSX 文件并将结果呈现在网页中。
我正在尝试获取存储日期和时间字符串的单元格的值,并使用以下代码在 PHP 中对其进行处理。
<?php
date_default_timezone_set('Australia/Canberra');
$value = $objPHPExcel->getActiveSheet()->getCell('A1')->getValue();
define('MIN_DATES_DIFF', 25569);
define('SEC_IN_DAY', 86400);
function excel2Timestamp($excelDate)
{
if($excelDate <= MIN_DATES_DIFF)
{
return 0;
}
return ($excelDate - MIN_DATES_DIFF) * SEC_IN_DAY;
}
echo $result = date('H:i:s d/m/Y', excel2Timestamp($value));
?>
虽然单元格中的原始值为“00:00:00 01/07/2012”,但上述 PHP 代码的输出并未给出正确的结果,而是显示“10:00:00 01/07/ 2012”。
貌似是时区差异造成的,但是我在代码开头已经定义了时区。不知道有什么问题。
有人可以帮我吗?提前致谢。
【问题讨论】:
-
第一个问题...为什么不使用 PHPExcel 的内置转换函数将 Excel 时间戳值转换为 unix 时间戳或 PHP DateTime 对象?这似乎是我看到人们坚持自己写的一周。其次,Excel 时间戳没有应用时区:它是一个 UST 值:github.com/PHPOffice/PHPExcel/issues/38
-
在这里看看我的回答:stackoverflow.com/questions/12246116/…
标签: php date timezone phpexcel