3

こんにちは~私はPHPExcel 1.7.7を使用してXLSXファイルを読み取り、結果をWebページに表示しています。

日付と時刻の文字列を格納するセルの値を取得し、次のコードを使用して 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」と表示されます。

タイムゾーンの違いが原因のようですが、コードの冒頭ですでにタイムゾーンを定義しています。何が悪いのかわかりません。

誰でも私を助けてもらえますか?前もって感謝します。

4

1 に答える 1

5

タイムスタンプに変換する関数を忘れてください(私も同じことをしていました)... 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');

それはうまくいくはずです。

于 2012-09-04T08:15:24.210 に答える