8月 18

この記事をブックマークする : このページをはてなブックマークに追加 このページをLivedoorクリップ! このページをニフティクリップに登録 newsing it! このページをdel.icio.usに登録 このページをBuzzurlにブックマーク

PHPで取得したデータをEXCEL形式で
出力するプログラムを組んでいるのですが、
日付文字列をシリアル値に変換するところで少し詰まったのでメモ。

PHP5.2以降では、datetime関数を利用することで
日付をシリアル値に変換することができるのですが、
PHP5.1以前の環境では、datetime関数は
実験的な形でしか導入されておらず、簡単に使えません。

そこで今回は、関数を使わずに、
日付をシリアル値に変換する処理を書くことにしました。


シリアル値というのは、EXCELが日付の表示に使っていて、
1900年1月1日を基点として、1日毎にプラス1されます。

現在時刻のシリアル値を求めるには、
1970年1月1日を基点とした秒数であるUNIXタイムを使い、

(/60/60/24)+25569(=70年分のシリアル値)

の式でシリアル値が算出できる。

しかし、これだけだとダメで、
日本の時刻は時差が9時間あるので、
それを加味してやると以下の式になる。

(/60/60/24)+25569+9/24

この式を使うことで日付文字列をシリアル値に変換することができました。
(もちろん日付文字列は、strtotimeなどでUNIXタイムに変換します。)


理解すると簡単な処理だったけど、
理解するまでに少し時間がかかってしまった。。

この記事をブックマークする : このページをはてなブックマークに追加 このページをLivedoorクリップ! このページをニフティクリップに登録 newsing it! このページをdel.icio.usに登録 このページをBuzzurlにブックマーク

Comments are closed.