PHP4はマイクロ秒は変換できないのね・・・。

先月納品したサイトでバグ発生。更新した商品を新しい順に表示できない。このサイトは、別のシステムからXMLファイルで商品データをインポートしている。

原因は、XMLファイルに格納されている商品の更新日付が、マイクロ秒付きで格納されていることだった。つまり、こんな型式。

2009-11-04 18:08:50.382221

もらったXML構造の仕様書には、YYYY-MM-DD H:i:s形式で秒までしか格納しないと書かれているが、そこは大人の対応で、こちらが対応する。

使っているUNIX時間に変換する関数strtotimeは、4ではマイクロ秒に対応していないのが原因だった。しっかりPHPのマニュアルにも書いてあった。マイクロ秒は結局は無視されるようだが。

というか、マイクロ秒が入ってくるなんて考えていなかった。マイクロ秒が入ってくればエラーにしておけばよかったかも。実は、テスト環境がPHP5で本番がPHP4というのも問題かもしれない。