From: Tadayoshi Funaba Date: 2007-12-27T20:46:36+09:00 Subject: [ruby-dev:32826] Re: class TimeSpan > [ruby-list:44398] で DateTime に対する加算が話題になっていますが、現在の > 方法は以下のような欠点があると思います。 (中略) > TimeSpan のようなクラスを追加すると以下のようになって誤解が少なくなるの > ですが、いかがでしょうか。 date4 では、Delta クラスがあって、こんなこともできます。 require 'date4' Date4::Delta.new(:days=>6) + Date4::Delta.new(:hours=>4) * 6 #=> # dt = DateTime4.new(2006,6,6) dt -= Date4::Delta.parse('180 days and 12 hours') puts dt.strftime('%+') # Wed Dec 7 12:00:00 +00:00 2005 require 'date4/timezone/posix' EST = Date4::TimeZone::POSIX.new('EST5EDT,M4.1.0,M10.5.0') dt = DateTime4.new(2006,6,6,:tz=>EST) dt += Date4::Delta.parse('-(2 fortnights - 1 hour * 673)') puts dt.strftime('%+') # Tue Jun 6 01:00:00 EDT 2006 今のところ、Time のことは考えてませんが、工夫すれば、若干の助けにはな るでしょうか。 Time.mktime(2000) + (Date4::Delta.nanoseconds(1234567890).in_seconds.to_f) #=> 2000-01-01 00:00:01 +0900 active_support のようなことは、date3 でちょっとやったんですが、受け入 れられないだろうと思ってすぐ止めてしまいました。