From: matz@... (Yukihiro Matsumoto) Date: 1998-02-13T19:23:20+09:00 Subject: [ruby-list:6407] Re: parsedate (Re: ruby 1.1b7 released) まつもと ゆきひろです In message "[ruby-list:6405] Re: parsedate (Re: ruby 1.1b7 released)" on 98/02/13, Tadayoshi Funaba writes: |ふなばです。 | |最初の正規表現、ISO 8601 ? のところはまつもとさんのお任せします :-) |# ISO 8601 は別枠にするつもりだと思ってました。 いや,こんなの簡単じゃん,なんて思ったのが間違いの元でした. パッチ出します. |で、その余計者ですが、 date (1) に対応したつもりだったので、付けたした |のです。それは "Tue Jul 3 01:02:03 MET DST 1997" というものに対応する |ものだったのです。 こういうフォーマットってあるんですね.無知. |ところで、"Sept 20, 98" が 西暦98年なのか、 西暦2098年なのか、それはお |そらく lib/parsedate.rb にはわからないことなのです。 だから、 そこは |lib/parsedate.rb を使うひとが考えることにしたいと思います。同じように、 |タイムゾーンの解釈もないわけですが、これは手抜きかもしれません。 まあ,タイムゾーンを解釈しないのは許せる妥協だとして,98年問 題はちょっと考えないといけませんね.いや,最初に考えなかった 私がいけないんですけど. というのもUNIXのtm構造体がyearは「西暦−1900」という定義を採 用しているので,rubyもTimeクラスなどで基本的にそれを踏襲して います.以前のparsedateはその辺をほんの少し意識していました が,今後はそことの関係をどうするか決めておかないといけません ね.まあ,選択肢は * Timeクラスの年表示を西暦にする * parsedateとtmの表示は無関係と宣言する * parsedateも(適当に推測した西暦から)-1900した値を返す くらいしかないんですが.Dateの方は西暦を使ってますし,推測は ろくでもないものになりそうですから,最後のものはあまりよくな いような気もしますが. まつもと ゆきひろ /:|) --- parsedate.rb 1998/02/03 10:02:57 1.1.1.1.4.2 +++ parsedate.rb 1998/02/13 10:05:28 @@ -13,3 +13,3 @@ # ISO 8601? - if date =~ /(\d\d\d\d)-?(?:(\d\d)-?(\d\d)?)? *(?:(\d\d):(\d\d)(?::(\d\d))?)?/ + if date =~ /^(\d\d\d\d)-?(?:(\d\d)-?(\d\d)?)? *(?:(\d\d):(\d\d)(?::(\d\d))?)?$/ return $1.to_i,