- 2007/04/04 01:09
- 記事
P_BLOGでRSSを出すと日時がおかしい。RSS 1.0の方はコロンを付けてOK。RSS 2.0の方は何故か16時間進む。どうやらこのサイトで使っているPHP 4.4.4のstrtotime()にISO8601を食わせた時の動きがおかしい。日付と時刻の間に「T」が入ってると16時間進む。何も入ってなければ大丈夫。「A」を入れてみたら8時間進んだ。何だこれ?
とりあえず-16時間するようソースを変更して回避。ついでにまじめなIE7でも大丈夫なようにコロンを取ってOK(実際にはdate()の書式指定を’r'にした)。
ちなみに、RSS 1.0はISO8601(W3C-DTF)、RSS 2.0はRFC2822で時刻を扱う。PHP 5.xのstrtotime()はISO8601を食わせても大丈夫らしいが、ホントかな?ChangeLogを見るとstrtotime()のバグが一杯 :-! これは使わない方が安全。
追記:PHP5.1で直ったBug#26320が該当してるっぽい。TをTZがMSTと解釈してる感じ。これならちょうど16時間なので話が合う。PHP 4.4.4ではZ付けるともっとひどいことになるけどね。それにしても、Bug#26320の投稿者自身がISO8601をISO6801と書き間違えてる。こんな調子ではバグだらけなのも無理ないか>PHP。
- 新しい: ホームページの評価基準
- 古い: 2007年度スタート