2012年11月21日 20:14 Masa <imagine / sakano.co.uk>:
> 端的には、
>  時間と時間の和および差 => 時間
>  時間とNumericの積 => 時間
>  時間と時間の商 => Numeric
> を計算したい次第です。
>
> # 物理単位としての「時間」の演算と言ってもいいです。
>
> 単位は、現実問題として、××時間(hour)か、せいぜい日(day)
> まであれば手前としては実用的に十分です。実際、年(year)が
> 出てくると、どの定義を採用するか、という不確定性が出てきて
> 混乱を招きそうですし……。
>
> そういうライブラリまたはクラスがきっとあるだろう、と思って
> 検索してみたのですが、適当なものが見つかりませんでした。

今 Ruby の世界にあるものでは、ActiveSupport::Duration がベストだと思います。
1.hour とか 1.month っていうアレですね。
古い Rails を知ってる方は「それって秒が返ってくるだけなんじゃね?」と思われるかもしれませんが、
実はRails 2 以降でも
  1.hour.class #=> Fixnum
などと本人は言っていますが実はこれは ActiveSuuport::Duration です。

関連するメソッドが散乱しているのでいまいちうまくまとまった文書を出せませんが、
まぁ適当に探せば必要なものは見つかるんじゃないかと思います。
http://api.rubyonrails.org/classes/ActiveSupport/Duration.html


長期的には Joda time を Ruby に移植するのもアリなのかなぁと個人的には思っています。
http://www.ibm.com/developerworks/jp/java/library/j-jodatime.html
Unix 秒はもちろん、カレンダーから期間・繰り返し・部分的な日時など、
日付時刻に関する人々の叡智が詰まってる感じでよさげなので。
JRuby は Time を実装するのにこれを使っているそうな。

-- 
NARUSE, Yui  <naruse / airemix.jp>