From: Akinori MUSHA Date: 2008-05-19T20:53:21+09:00 Subject: [ruby-dev:34757] Re: Date.parse("##-##-##") --pgp-sign-Multipart_Mon_May_19_20:53:22_2008-1 Content-Type: text/plain; charset=ISO-2022-JP At Mon, 19 May 2008 08:06:58 +0900, Tadayoshi Funaba wrote: > >  Date.parse("##.##.##") の ruby_1_8 における挙動が trunk とも > > ruby_1_8_6 とも異なります。 > > > > % for ruby in ruby-{1.8.6,1.8,1.9}; do $ruby -rdate -ve 'p Date.parse("10.09.08").strftime("%Y-%m-%d")'; done > > ruby 1.8.6 (2008-03-03 patchlevel 114) [i686-darwin9.2.2] > > "0008-10-09" > > ruby 1.8.7 (2008-05-17 patchlevel 5000) [i686-darwin9.2.2] > > "0010-09-08" > > ruby 1.9.0 (2008-05-18 revision 15263) [i686-darwin9.2.2] > > "2010-09-08" > > > >  どちらかに合わせることはできないでしょうか。 > > 以前は、米国式に判断していましたが、実際のところ米国などであまりつかわ > れず、むしろ日本周辺国で、つかわれるほうが多いと判断して変更しました。 > ドイツなど欧州の一部でつかわれていると思いますが、やはり順番が違うので > 救われませんが、この件については、最初の僕の判断がよくなかったと思いま > すが、基本的には、このように正したいと思っています。 > > 1.9 では、さらに年の補完をデフォルトでするようになっています。  なるほど、お考えはわかりました。ありがとうございます。  今、 RubySpec 等で判明した非互換性について NEWS に記述を追加 しているところなのですが、本件についてのユーザ向けの説明は次の ような感じでいいのでしょうか。  「1.9 同様、"##.##.##"は"YY.MM.DD"と解釈されるようになった。 なお、 1.9 からは二桁の西暦年は自動で 1969-2068 に補完される ようになるので、今のうちから Date.parse(str, true) としておく といいよ。」  上記が正確ではない場合、書き換え方法やその説明があまりに面倒 なら 1.8.6 の仕様に戻すことも検討したいのですが、何かよい案は あるでしょうか。 -- Akinori MUSHA / http://akinori.org/ --pgp-sign-Multipart_Mon_May_19_20:53:22_2008-1 Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (FreeBSD) iEYEABECAAYFAkgxajIACgkQkgvvx5/Z4e41LACeJ4lGRN+cUoD4HB+acXY9rcKq KPYAnA9OLhqP1JjqJ1zGveOCkhWlyPsw =Tnp3 -----END PGP SIGNATURE----- --pgp-sign-Multipart_Mon_May_19_20:53:22_2008-1--