あなたは、MS Excelのシリアル化されたタイムスタンプ値を戻しますgetValue()
方法、
$excelTimestampValue = $objPHPExcel->getActiveSheet()
->getCell('A12')
->getValue();
を用いて細胞からの生の値を返すことができます。つまり、1900年1月1日(または1904年1月1日、スプレッドシートファイルが使用しているカレンダーに応じて)からの日数を表す浮動小数点数です。そのタイムスタンプ値から、多くのオプションがあります:
タイムスタンプをunixタイムスタンプに変換します。これは、PHPのdate()
関数を使用してフォーマットします。
$unixTimestamp = PHPExcel_Shared_Date::ExcelToPHP($excelTimestampValue);
echo date('d-M-Y', $unixTimestamp);
あなたがformat()
メソッドを使用したいが、その後どのことができますフォーマット、PHPのDateTimeオブジェクトにそのタイムスタンプに変換します。
$dto = PHPExcel_Shared_Date::ExcelToPHPObject($excelTimestampValue);
echo $dto->format('d-M-Y');
MS Excelの日付フォーマットマスクを使用して、文字列に直接フォーマットします。
echo PHPExcel_Style_NumberFormat::toFormattedString($excelTimestampValue, 'dd-mmm-yyyy');
プログラムが誤って1904の代わりに1900カレンダーを使用すると、日付が失われる可能性はありますか? – abinax
なぜ日付は失われますか? Excelファイルが1900年または1904年のカレンダーを使用するかどうかは、ファイルがロードされたときに識別され、PHPExcelに格納されるため、 'ExcelToPHP()'または 'ExcelToPHPObject()'を使用してUnixタイムスタンプまたはDateTimeオブジェクトに変換すると、どのカレンダーが使用され、それに応じて調整されます –
PHPExcelはよく使う魔法使いを知っていますか?だから、恐れはありません。ありがとう – abinax