RSS1.0やRSS2.0に加えてAtomフィードを取得するためにMagpieRSSを導入した。勝手にタイムスタンプを吐き出してくれるという事で非常に便利。日付の型がまちまちなので、これで安心。と思ったのが間違いだった。
Atomではタイムスタンプを上手く出してくれない。しかも一部のRSS2.0でも。これでは困る。結局複数の日付に対応させることになってしまった。意味ない。
そして特に困ったのがAtomの日付。RFC3339という形式でよく見かける気はするんだけどPHP4でキレイに変換する方法が見つからない。しょうがないので汚いけどこんな感じで書いた。
$date_rfc3339 = $item['published'];
preg_match("/(d{4})(?:-(d{2})(?:-(d{2})(?:T(d{2}):(d{2})(?::(d{2})(?:.(d+))?)?(Z|([+-]d{2}):(d{2}))?)?)?)?/", $date_rfc3339, $date_array);
$date_timestamp = strtotime($date_array[1]."/".$date_array[2]."/".$date_array[3]." ".$date_array[4].":".$date_array[5].":".$date_array[6]);
if ($date_array[8] == "Z") $date_timestamp+=9*60*60;
$etr_date = date("Y/m/d H:i:s", $date_timestamp);
なんかあると思うんだけどなー。
コメントを残す