【问题标题】:Mismatch when converting Excel date numbers to Unix Timestamp using PHP使用 PHP 将 Excel 日期数字转换为 Unix 时间戳时不匹配
【发布时间】: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”。

貌似是时区差异造成的,但是我在代码开头已经定义了时区。不知道有什么问题。

有人可以帮我吗?提前致谢。

【问题讨论】:

标签: php date timezone phpexcel


【解决方案1】:

忘记将您的函数转换为时间戳(我也在这样做)... PHPExcel 会自动进行转换,因此请尝试这样做:

//get the excel date value (if it's stored in the A1 cell)
$excelDate = $objPHPExcel->getActiveSheet()->getCell('A1')->getValue();
//converts from excel format to a datetime object
$date = PHPExcel_Shared_Date::ExcelToPHPObject($excelDate);
//format the date as you want.
$formatedDate = $date->format('m/d/Y');

它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 2020-10-19
    • 2011-09-23
    • 2012-09-01
    • 2015-02-09
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多