2

phpexcel とコード イグナイターを使用して、この Excel データシリアル値41225を日付形式に変換するにはどうすればよいですか?12-Nov-2012

以下を試してみましたが、うまくいきませんでした。

$G74 = $objPHPExcel->getActiveSheet()->getCell('B6')->getValue();
4

3 に答える 3

11

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");
于 2012-12-19T23:56:01.640 に答える
3

セルに日付として書式設定する書式マスクがある場合は、getValue() ではなく getFormattedValue() メソッドを使用すると役立つ場合があります。getValue() は生の値を返します。これは (この場合) Excel のシリアル化された数値です。

それ以外の場合、PHPExcel_Shared_Date クラスの ExcelToPHP() または ExcelToPHPObject() メソッドは、UNIX タイムスタンプまたは PHP DateTime オブジェクトを返すジョブを実行する必要があります。

于 2012-12-19T23:58:35.573 に答える