RSS で pubDate や lastBuildDate を出力する時に気になる DATE_RFC822 や DATE_RFC2822 の違いについて

DATE_RFC822 ではなく DATE_RFC2822 にする件についての個人的なメモです。RSS の調子が悪かったので、以下のサイトでチェックしたところたくさんエラーが出てきました。

エラー内容は以下です。

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations. line 14, column 46: Problematical RFC 822 date-time value: Fri, 25 Nov 11 22:01:10 +0900

以前ブログにメモするときに DATE_RFC822 をすれば良いと書きましたが、しっかり見てみると間違ってます。というかコメントでアドバイス頂けてるのに気付いてませんでした。正確には DATE_RFC2822 で4桁で表示しなければいけないようです。

DATE_RFC2822 とか DATE_RFC822 とかイマイチわからないので調べてみたら以下のサイトにざっと一覧にされてました。

似たような定数を一覧にしてみました。

定数
DATE_ATOM Y-m-d\TH:i:sP
DATE_COOKIE l, d-M-y H:i:s T
DATE_ISO8601 Y-m-d\TH:i:sO
DATE_RFC822 D, d M y H:i:s O
DATE_RFC850 l, d-M-y H:i:s T
DATE_RFC1036 D, d M y H:i:s O
DATE_RFC1123 D, d M Y H:i:s O
DATE_RFC2822 D, d M Y H:i:s O
DATE_RFC3339 Y-m-d\TH:i:sP
DATE_RSS D, d M Y H:i:s O
DATE_W3C Y-m-d\TH:i:sP

DATE_RFC822 と DATE_RFC1036 が一緒で、DATE_RFC1036 と DATE_RFC1123 と DATE_RSS がこれまた一緒です。ちなみに以下の記事に以下のように書いてあります。

DATE_RFC822だと2桁、DATE_RFC2822だと4桁で年を表示します。ですからDATE_RFC822をDATE_RFC2822に書き換えればOK。バグか?というとそうではなくて、DATE_RFC822が旧仕様ということみたいです。

こう見ると DATE_RSS を使えば良さそうですが、RFC2822 とか気になるのでちょっと調べてみることにしました。

有名なのを調べてみる

ATOM

よく見る Atom ですが、考えてみるとしっかり調べたことがないので勉強になりました。主な概要については以下の抜粋が参考になりそうです。

Atom(アトム)とは、ウェブ上の各種コンテンツを配信するためのXML文書フォーマット及びコンテンツの編集を行なうための通信プロトコルなど幾つかの仕様群の総称である。

用途については以下です。ここが知りたかったです。

ブログやニュースサイトの更新情報の配信のみにとどまらず、MP3や動画などのリッチメディアの配信にも用いることが出来る。拡張性が高いため、メタデータの流通方法として汎用的に利用することが可能となっている。

Wikipedia から引用させて頂きました。

COOKIE

言わずもがなの Cookie ですね。Cookie の日付形式について触れている記事で参考になったものをあげておきます。

ISO8601

ただの数字でイマイチ馴染みがないですが、日付と時刻の表記に関する国際規格だそうです。

最新版は2004年に発行されたISO 8601:2004 で、古い版としてISO 8601:2000 、ISO 8601:1988 があった。(中略)対応する日本工業規格として、JIS X 0301があり、ISO 8601:2000 の翻訳がJIS X 0301:2002 「情報交換のためのデータ要素及び交換形式 ― 日付及び時刻の表記」(英語題はISO 8601に同じ)に収められている[1]。

Wikipedia から引用させて頂きました。

RFC822 / RFC2822

今回使っていてエラーを吐いていた奴です。一番気になりますね、いろいろ調べたら以下のサイトが参考になりました。

電子メールに関するきまりが書かれたRFC。1982(昭和57)年にDavid H. CrockerがRFC 733を改訂し、RFC 822とした。その後、RFC 2822が発行され、RFC 822は破棄された。

RFC733 というのもあったみたいですね。RFC822 は既に破棄されて RFC2822 になっているとは、既に破棄されているものを誤って使っていたのですね。それでも一般的な RSS リーダーなどでは読めていたので互換性を持たせていてくれていたんでしょうか。これからは RFC2822 を使いましょう。

おわりに

あんまり調べるよりは、こんな規格の日付を使いますというのをもう少ししっかり学ぶようにすると良さそうだと想いました。今まで日付は結構蔑ろにしてきましたが、これからは仕様を読んだりしてブログ記事にまとめていこうと思います。なんか一段階前に進めた気がしました。

コメント

コメントは受け付けていません。