From: "NARUSE, Yui" Date: 2007-12-28T12:47:36+09:00 Subject: [ruby-dev:32840] Re: class TimeSpan 成瀬です。 Tadayoshi Funaba wrote: > 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 おぉ、いいですね。こちら、実験のための派生物となっていますが、1.9 でとり こめないのですかね。 > 今のところ、Time のことは考えてませんが、工夫すれば、若干の助けにはな > るでしょうか。 > > Time.mktime(2000) + (Date4::Delta.nanoseconds(1234567890).in_seconds.to_f) > #=> 2000-01-01 00:00:01 +0900 Time が other.to_f の前に other.in_seconds なりを見て to_f するのがベス トかなぁと思っています。パッチでは Time にまで手を入れるのが面倒だったの で略しましたが。 > active_support のようなことは、date3 でちょっとやったんですが、受け入 > れられないだろうと思ってすぐ止めてしまいました。 Rails的にはアリなのでしょうが、Ruby的にはなんか違うというか、まつもとさ んがダメと言いそうなんですよね。 -- NARUSE, Yui DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA