date2 1.x、および 2.x は、ただ関連ファイルを寄せ集めただけのものでしたが、 3.x では、かなり整理されたと思います。
実験的に作成された date3.rb は、なくなりました。 あらたに date.rb で提供されることになった DateTime は、 date3.rb の拡張された Date と本質的に同じものです。 もちろん、異なる点はありますが、それについては、ここでは述べません。
str[fp]time.rb で提供されていたコードは、date/format.rb に移動しました。
q?holiday.rb で提供されていたコードは date/holiday.rb に移動しました。
parsedate2.rb は、とうの昔に役目を終えていたので、なくなりました。 parsedate3.rb で提供されていたコードは、date/format.rb に移動しました。 parsedate.rb は、date/format.rb に依存しています。
おまけの odate.rb は、なくなりました。
2.x 3.x date2.rb date.rb str[fp]time.rb date/format.rb q?holiday.rb date/holiday.rb parsedate3.rb parsedate.rb
いくつかのメソッドの名前を改めました。ただ、暫くは旧い名前もつかえます。
2.x 3.x exist1? valid_jd? exist2? valid_ordinal? exist? と exist3? valid_date? あるいは valid_civil? existw? valid_commercial? new1 jd new2 ordinal new3 new, civil neww commercial sg start newsg newsg nhol? national_holiday? qnhol? old_national_holiday?
nhol? がつかっていた下請けメソッドは、 利用者に公開する意味があまりないので、公開しないようにしました。 qnhol? についても同様です。
他にも、いくつかの文書化されていないメソッドが改名しています。 それらについては、ここで述べません。 また、それらの旧い名前は残してありません。
Date は、内部表現としてユリウス日をつかっています。 たとえば、2001年1月1日は、ユリウス日で、2451911 としていました。 この場合のユリウス日は、その日全体をあらわしています。 しかし、ユリウス日は、時刻を表現することもできるのです。 その場合、ユリウス日は、端数を含み得るでしょう。
実は、ユリウス日の一日は、協定世界時の正午から始まるので、 2451911 (2451911.0) は、 2001年1月1日正午 (協定世界時) と解釈することもできます。 DateTime との関係を考えると、これはあまり都合のよいものではないと思われます。 そこで、これからは、Date は、2001年1月1日を ユリウス日で、2451910.5 と表現するように改められました (実際には、 Rational で表現されています)。
あくまで内部表現の変更ですから、 一般の利用者には、ほとんど影響はないと思われます。 ただし、一部の文書化されていないメソッドを利用している場合は別です。
日差は、Rational で表現されます。
書式が変更になりました。
メソッド jd は、ユリウス日を返します。 Date.new(2001,1,1).jd の値は、2451911 です。 これは、以前と変わりありません。
これからは、jd は、年代学的な (chronological) ユリウス日である、 と説明することにします。 普通のユリウス日では、一日は、協定世界時の正午から始まりますが、 年代学的なユリウス日では、一日は、その地方時における零時から始まります。 この jd は、以前と同じく時刻の情報を含みません。 つまり、日が同じなら時刻がいつであろうと、 時差がどうであろうと、jd の値は変わりません。
文書化されていないメソッド ajd (旧名 rjd) は、メソッド jd に似ていますが、 天文学的な (astronomical) ユリウス日を返します。 こちらは、本来のユリウス日で、 時刻の情報も含みます (Rational で表現されます)。 ここまでは以前と変りありませんが、 Date.new(2001,1,1).ajd の値は違うものになります。 なぜなら、以前は、2001年1月1日正午 (協定世界時) として表現されていましたが、 これからは、2001年1月1日零時 (協定世界時) として表現されるからです。
ややこしいのですが、実際、このようなことを意識しなればならない人は、 ほとんどいないと思います。
メソッド mjd は、修正ユリウス日を返します。 Date.new(2001,1,1).mjd の値は、51910 です。 これは、以前とは異なります(以前は 51910.5)。
これからは、mjd は、 年代学的な (chronological) 修正ユリウス日である、とします。 普通の修正ユリウス日では、一日は、協定世界時の零時から始まりますが、 年代学的な修正ユリウス日では、一日は、その地方時における零時から始まります。 この mjd は、以前と同じく時刻の情報を含みません。 つまり、日が同じなら時刻がいつであろうと、 時差がとうであろうと、mjd の値は変わりません。
文書化されていないメソッド amjd (旧名 rmjd) は、メソッド mjd に似ていますが、 天文学的な (astronomical) 修正ユリウス日を返します。 こちらは、本来の修正ユリウス日で、 時刻の情報も含みます (Ratioanl で表現されます)。 ここまでは以前と変りありませんが、 Date.new(2001,1,1).amjd の値は違うものになります。 なぜなら、以前は、2001年1月1日正午 (協定世界時) として表現されていましたが、 これからは、2001年1月1日零時 (協定世界時) として表現されるからです。
ややこしいのですが、メソッド mjd には注意してください。 メソッド mjd と amjd の定義は、つぎのようになります。
(以前は #mjd = #jd - 2400000.5)
(以前も同じ)
Date::parse、および Date::_parse が加えられました。
書式のデフォルトが '%c' から '%F' (Date)、 あるいは '%FT%T%Z' (DateTime) になりました。
以前の Date::strptime は Date::_strptime になりました。 時差の参照に、:off ではなく、:offset をつかうようにしました。 あたらしい Date::strptime は、日付オブジェクトを返します。
切詰ユリウス日に関するメソッドはすべて削除されました。
DateTime::new では、年月日につづけて、時分秒、時差を受けとります。 jd、ordinal、commercial も同様です。 DateTime::today はありません。 DateTime::now がつかえます。
hour、min、sec、offset、zone などのメソッドがつかえます。
ふなばただよし 2002
更新日時: 2006-10-24T14:23:02+09:00