phpexcel とコード イグナイターを使用して、この Excel データシリアル値41225
を日付形式に変換するにはどうすればよいですか?12-Nov-2012
以下を試してみましたが、うまくいきませんでした。
$G74 = $objPHPExcel->getActiveSheet()->getCell('B6')->getValue();
phpexcel とコード イグナイターを使用して、この Excel データシリアル値41225
を日付形式に変換するにはどうすればよいですか?12-Nov-2012
以下を試してみましたが、うまくいきませんでした。
$G74 = $objPHPExcel->getActiveSheet()->getCell('B6')->getValue();
Excel の日付は、1900 年 1 月 1 日からの日数として保存されます。ただし、1900 年はうるう年ではないため、1 つの誤差が生じます。したがって、このハックを使用して DateTime オブジェクトを作成できます (1900 年 3 月 1 日以降の日付に有効です)。
$n = 41225;
$dateTime = new DateTime("1899-12-30 + $n days");
次のようなもので DateTime オブジェクトをフォーマットできます。
echo $dateTime->format("d M Y");
日付だけでなく時刻も含めたい場合は、86400 (1 日の秒数) を掛けて、変換する前に 1900 年 1 月 1 日からの秒数を取得します。
$n = 42898.35416666;
$dateTime = new DateTime("1899-12-30 + ". round($n * 86400) . " seconds");
セルに日付として書式設定する書式マスクがある場合は、getValue() ではなく getFormattedValue() メソッドを使用すると役立つ場合があります。getValue() は生の値を返します。これは (この場合) Excel のシリアル化された数値です。
それ以外の場合、PHPExcel_Shared_Date クラスの ExcelToPHP() または ExcelToPHPObject() メソッドは、UNIX タイムスタンプまたは PHP DateTime オブジェクトを返すジョブを実行する必要があります。