date に以下のような変更をします、たぶん。


* parse

年日付 (例: 2006-333, 2006333 06333) や暦週日付 (例: 2006-W15-5,
2006W155 06W155) で日付が作れます。

'GMT Standard Time' のようなタイムゾーン名を拾います。
'Mexico Standard Time 2' のようなものはダメです。

'GMT+09'、'-3'、'-3.5' のような時差も拾います (それぞれ +09:00、-03:00、
-03:30 と等価)。+091234 や +09:12:34 も受けとります。

# これまで、'GMT+09' のような時差を拾わなかったのは、解釈がふたつあり
# えるからです。POSIX は西が正ですが、しかし、この表現は常識的ではない
# と思うので、これを切り捨てることにしました。

'1 pm' のような分のない時刻も拾います。

日のない年月のみの形式は基本的にあつかわない方針でしたが、'Sept 2000'
ようなものなど、いくつかは受けつけるつもりです。

'09' が 9日 と認識されます。

'10.9.2000' のようなドットで区切った日付も拾うかもしれません。あつかい
は / と同じ。

日本語の日付が通ることがあります。

parse は以下のような日付も受けとれるようになります。

  'jan 2 3 am +4 5'
  'fri1feb3bc4pm+5'
  '平成元年8月8日 (火) 午後2時30分59.5秒'


* str[fp]time

str[fp]time に指定子 %L、%N、%Q を追加します。

strptime で、%s、%Q、年日付: %Y-%j、暦週: %G-%V-%u などをつかって日付
がつくれます。%Y-%[UW]-%[uw] の組み合せでもつくれます。

parse と同様に、'GMT Standard Time'、'-3'、'-3.5' のようなタイムゾーン、
時差を受けつけます。

strptime は strftime の形式をより尊重します。たとえば、%j は数字を3桁
以上読むことはありません。%Y は基本的に高々4桁ぶんしか読みませんが、つ
ぎに期待されるパターンが数値でないと判断できれば、制限されません。以下
のような場合は成功します。

  _strptime('20060808', '%Y%m%d')
  _strptime('92006-08-08', '%Y-%m-%d')
  _strptime('friaug', '%a%b')

strftime で、GNU のものと同様のフラグ [-_0^#] と幅指定をつかえるように
するかもしれません。strptime に相当の仕掛を用意するつもりはまったくあ
りません。

strptime は以下のような日付も受けとれるようになります。

  strptime('fri1feb034pm+5','%a%d%b%y%H%p%Z')


* メソッドの追加

{prev,next}_{year,day} を加えようかと思います。next_day は、引数がない
場合は、以前からある next と同じです。

1.9 で、いつのまにか min に minute をいう別名がつけられていたのですが、
Date では min はつかえないのに、minute として参照できる、というおかし
なことになっていたので、削除していました。もし、minute や second があっ
たほうがいい、ということであれば、あらためて用意します。

あまりつかわれていないと思いますが、os?、ns? は、やはりあまりよくない
名前なのではないか、ということで、代りに julian?、gregorian? を用意し
ようと思います。将来的に、os?、ns? は廃止の方向で。

あまりつかわれていない機能だと思いますが、新暦の開始日の指定で、真偽値
をつかわないようしていきたいと思います。今後は、Date::JULIAN、
Date::GREGORIAN をつかうよう勧めます。


* 1.8 と 1.9 の違い

parse で日本語の日付を通す、というのは、最終的には消す可能性が高いと思
いますが、文句がなければ、1.9 に入れるつもりです。1.8 には入れません。
まったくの新規のメソッドは、1.8 入れるつもりはありません。

ちなみに、今現在の 1.8 と 1.9 の違いは、

  {Time,Date,DateTime}#to_{time,date,datetime} の追加。
  {next,prev}_month の追加。
  sunday? など述語の追加。
  いつのまにか parsedate.rb に strptime がある。
	-- ここに strptime は必要?
	-- エラーメッセージがおかしい。