青山です。

Mon, May 24, 1999 at 11:07:50AM +0900 において
Shugo Maeda さん曰く:

> 今までの話の流れ:
>   私: strftime("%a, %d %b %Y %X %Z")でRFC1123のフォーマットになる
>   のを期待するのはまずいのではないか。
>   # 理由: %aなどがマニュアルでlocaleに従った名前と定義されているから。

ここに気が付いていなかったのですが、man strftime の方にあったんですね。
で、とりあえず HTTP に関しては asctime も認められているので、こちらなら
locale に依存せずに済みそうです。

> > to_rfc1123 はともかく、locale に依存しない何かは必要でしょう。それがな
> > ければネットワーク系のもので安心して日付を扱えませんから。
> 
> それでしたら、私としてはdateformat.rbというのを推します。

何を問題にしているのかをよりわかりやすくする意味も含めて、前田さんのサ
ンプルを引用させて頂きます。

class Time
  RFC822_DAYS = [
    "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
  ]
  RFC822_MONTHS = [
    "Jan", "Feb", "Mar", "Apr", "May", "Jun",
    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
  ]
  def to_rfc1123
    t = clone.gmtime
    return format("%s, %.2d %s %d %.2d:%.2d:%.2d GMT",
                RFC822_DAYS[t.wday], t.day, RFC822_MONTHS[t.month-1], t.year,
                t.hour, t.min, t.sec)
  end
end

という事で、strftime の %a や %b では locale によって変化するので、ネッ
トワーク系のものを組む時には、このように週や月の表示を用意してやる必要
があるという話でした。

そして、これを標準ライブラリとして提供して頂くか、あるいは本来は不適切
かもしれない gmtime というメソッドがあるついでになんらかのメソッドとし
て追加してしまうか、あるいは strftime を拡張し、rfc822 の wday を返す
%r と rfc822 の month を返す %R とか...


-- 
青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>