ふなばです。

最初の正規表現、ISO 8601 ? のところはまつもとさんのお任せします :-)
# ISO 8601 は別枠にするつもりだと思ってました。

>でこの部分を削除しても date の出力のような
>  Fri Feb 13 10:23:17 JST 1998
>という形式もだめです. これは (?:\s+([a-z]{1,4}) が一個余計の
>ような気がする. patch を添付します.

これは、ちょっと違います。この部分は、僕の試案が取りこまれていますが、
その余計者 (?) は、 僕が必要だと思って、最初の試案の堤出のあとで付け加
えたものなのです。 では、何が悪いかというと、そのあとに `?' が必要だっ
たのです。僕はつけたつもりだったのですが、うっかり落してしまったようで
す。これは僕のミスです。

--- parsedate.rb.orig	Tue Feb  3 18:28:15 1998
+++ parsedate.rb	Fri Feb 13 16:52:43 1998
@@ -25,7 +25,7 @@
     if date.sub!(/(#{DAYPAT})[a-z]*,?/i, ' ')
       wday = DAYS[$1.downcase]
     end
-    if date.sub!(/(\d+):(\d+)(?::(\d+))?\s*(am|pm)?\s*(?:\s+([a-z]{1,4}(?:\s+[a-z]{1,4})|[-+]\d{4}))?/i, ' ')
+    if date.sub!(/(\d+):(\d+)(?::(\d+))?\s*(am|pm)?\s*(?:\s+([a-z]{1,4}(?:\s+[a-z]{1,4})?|[-+]\d{4}))?/i, ' ')
       hour = $1.to_i
       min = $2.to_i
       if $3

で、その余計者ですが、 date (1) に対応したつもりだったので、付けたした
のです。それは "Tue Jul  3 01:02:03 MET DST 1997" というものに対応する
ものだったのです。

>#あまりまじめに見てないけど (?:) をこんなに多用しないといけないのかな?

# 抽象的な話ばかりしてもラチがあかないということで、即席で書いた修正試案
# ですし、もっといいものを提案してくださればいいと思います。期待しており
# ますよ :-) また、本質的な議論というのはなかったわけで、 わたなべさんに
# 考えがあれば、それをしましょう。

>そういえば仕様も変わりましたね. [98, 2, 13] という形式から
>[1998, 2, 13, 5, 10, 29, 33, "JST"] に.
>sample/from.rb も y%100 にしたほうがいいか.

このあたりも、僕の試案が取りこまれています。僕は "Sept 20, 2000" といっ
たものが、うまくゆかないが、これはなんとかできるだろうということをいい
ました。僕はわざわざ情報を捨るようなことはしないほうがいいと思います。
そういう考えで提案しています。

ところで、"Sept 20, 98" が 西暦98年なのか、 西暦2098年なのか、それはお
そらく lib/parsedate.rb   にはわからないことなのです。 だから、 そこは
lib/parsedate.rb を使うひとが考えることにしたいと思います。同じように、
タイムゾーンの解釈もないわけですが、これは手抜きかもしれません。

わたなべさんのいうように、もともとなかったものがあるわけです。僕が試案
としてつけてみたものです。時刻は日付のおまけではないので、捨てることは
ないと思いました。必要ないなら、利用者が無視するということでいいという
考えです。また、一応、日付だけ、時刻だけ、曜日だけを含む表現も解釈でき
るだろうということで、そのつもりで書いていました。ま、このあたりは最初
の提案にはなかったところなので、ついでなのですが。

もう少し、わたなべさんの考えを聞きたいですね。

--Tadayoshi Funaba