Rails で W3C-DTF
このサイトによれば、W3C-DTF とは、「1997年9月に W3C の会員企業である Reuters Limited が W3C に提出した ISO 8601の日付形式のプロファイル」で、正確には W3C の正式規格ではないとのこと*1。しかし RSS 方面では幅を利かせているらしく、この validatorは日付の形式が違うと文句をのたまう。
Ruby でお手軽に W3C-DTF 形式の日付を出してくれるソースコードをネットで探していたのだが、見つからなかったので自作してみた・・・と書きかけたのだが、実は Rails が Time クラスを拡張していることを発見。 訂正:moro さんにご指摘いただきました。実は Ruby の time ライブラリでの拡張だそうです。謹んで訂正します。
Time.now.iso8601 # => "2008-07-22T14:20:00+09:00"
で OK ぽい。iso 8601 とは書いてあるが、実際には W3C-DTF みたいである。
いちおう悔し紛れにW3C-DTF の仕様書のハイライトをここに掲げてみる。
Year: YYYY (eg 1997) Year and month: YYYY-MM (eg 1997-07) Complete date: YYYY-MM-DD (eg 1997-07-16) Complete date plus hours and minutes: YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00) Complete date plus hours, minutes and seconds: YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00) Complete date plus hours, minutes, seconds and a decimal fraction of a second YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00) where: YYYY = four-digit year MM = two-digit month (01=January, etc.) DD = two-digit day of month (01 through 31) hh = two digits of hour (00 through 23) (am/pm NOT allowed) mm = two digits of minute (00 through 59) ss = two digits of second (00 through 59) s = one or more digits representing a decimal fraction of a second TZD = time zone designator (Z or +hh:mm or -hh:mm)
*1:これは ISO 8601 という日付に関する仕様のサブセットらしい。元があまりに柔軟性が高すぎて混乱するから、普通に必要なものだけに限定しようよ、という話らしい