DATE_RFC822とDATE_RFC2822
HTMLScrapingのサンプルスクリプトHTMLToFeed.class.phpで、RSSを作成しています。
その際、はき出すRSSの「年」が
Thu, 02 Jul 09 00:00:00 +0900
となってしまい、2009と表示されない問題がありました。
問題を解決したので、メモしておきます。
HTMLToFeed.class.phpで日付が関係するのは、以下の部分です。
$channel_element->appendChild($doc->createElement('lastBuildDate', date(DATE_RFC822, time())));
pubDateについても同じような行があります。
DATE_RFC822で、出力される日付の形式を指定しています。
▽PHP: date - Manual
http://jp.php.net/manual/ja/function.date.php
DateTime::RFC822
DATE_RFC822
RFC 822 (例: Mon, 15 Aug 05 15:52:01 +0000)
DateTime::RFC2822
DATE_RFC2822
RFC 2822 (Mon, 15 Aug 2005 15:52:01 +0000)
▽PHP: DateTime - Manual 定義済み定数
http://jp.php.net/manual/ja/class.datetime.php#datetime.constants.types
以上を見ればわかるように、DATE_RFC822だと2桁、DATE_RFC2822だと4桁で年を表示します。
ですからDATE_RFC822をDATE_RFC2822に書き換えればOK。
バグか?というとそうではなくて、DATE_RFC822が旧仕様ということみたいです。
そこらへんの変遷はよくわかりませんが。
ぐぐってヒットした、以下のやりとりを読んでて気付きました。
▽[PHP-users 29199] imap_append
http://www.nabble.com/-PHP-users-29199---imap_append-td4367964.html
あたりさえつけば必要な情報がカンタンにみつかる。イイ時代ですねぇ。
あたりがつかないときは大変なんですけど(^_^;