2011-07-27 8 views
4

Excelの日付形式は、1899年12月30日以降の日数と考えられています(なぜですか?1900年1月1日に基づいているため、1900年に閏年を誤って含むため、 Excelの「1/1/1901」は「367」です。)PHPの日付をExcelに変換しますか?

したがって、どのようにして日付またはタイムスタンプをPHPから変換できますか(通常はUNIXタイムスタンプ、1970年1月1日以降の秒数)をExcelに出力しますか?

PHP 5.1.6では?

ええ、あなたはそれが来るのを見ていないでしょうか?だから、私はDateTimeオブジェクト、date_create()、date_diff()などの機能は利用できません。

Excelの日を1970年1月1日に記録してそこから作業するだけでも可能ですか?そして、DST-proofバージョンがありますか? Excelの日付にUnixタイムスタンプを変換する

+0

Excelファイルに書き込むために使用しているものに、変換機能が付属しているとは思いませんか?これがちょうどCSVの場合、私はExcelが基本的な日付/時刻形式を解析するのにはかなり優れていることを発見しました。 – Brad

+0

私はPHPExcelを使用しています。日付を変換する組み込み関数はPHP 5.2に依存しています。 PHPExcelの95%は5.1で動作しますが、日付変換は動作しません。私は実際のExcelファイルを作成しています。日付文字列を "07/27/2011"で送信すると、日付として認識されないように見えるので、操作と並べ替えはオフになります。 – Andrew

+0

5.2にアップグレードすることはできないと思いますか? – Brad

答えて

9

私は間違っていない場合は、86400秒は一日であり、そしてだから、1899年12月30日と1月1日、1970年の間に25569日、式

ExcelDate = 25569 + UnixTS/86400

はすべきです。もちろん、この式はUTCにのみ正しいです。 (また、うるう秒を無視します。)他のタイムゾーンの場合、UTCからのオフセット(秒単位)を知っている場合は、上記の式を使用する前にタイムスタンプに追加することができます。

+0

これは今のところうまくいくと思います。そして、私はDSTが重要であるとは思っていません。 (480.04日、479.96日のように終わると、480にも丸めるでしょう...) – Andrew

+0

#日数を入れても、書式設定コードにはまだ5.2が必要です。しかたがない。 – Andrew

関連する問題