まつもと ゆきひろです
In message "[ruby-list:6405] Re: parsedate (Re: ruby 1.1b7 released)"
on 98/02/13, Tadayoshi Funaba <tadf / kt.rim.or.jp> 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,