[ruby-list:49454] Re: [Q]時間の四則演算

From: "Takashi SUGA" <suchowan@...>
Date: 2013-06-07 00:29:47 UTC
List: ruby-list #49454
須賀です。

先日公開した when_exe ( http://rubygems.org/gems/when_exe )では、
最小構成の使い方として TM_Duration クラスのみを使うユースケースを
想定しました。

http://www2u.biglobe.ne.jp/~suchowan/u/wiki.cgi?Calendar%2FWhen%2FRuby%2F2%2EAPI%E3%81%AE%E4%BD%BF%E7%94%A8%E4%BE%8B%2F4%2E%E6%99%
82%E9%96%93%E9%96%93%E9%9A%94%2F%E6%9C%80%E5%B0%8F%E3%82%BB%E3%83%83%E3%83%88

when_exe 0.3.1 は全体としては重い実装ですが、

require 'when_exe/tmduration'

するだけなら、これ以上ないコンパクトな実装になるように配慮しました。

--------
須賀隆
Blog: http://suchowan.at.webry.info/

-----Original Message-----
From: Masa [mailto:imagine@sakano.co.uk] 
Sent: Wednesday, November 21, 2012 8:14 PM
To: ruby mailing list
Subject: [ruby-list:49010] [Q]時間の四則演算

坂野 正明です。

時間の四則演算をしたいと考えています。
たとえば
  3分20秒 - 20秒 => 3分 (=180秒)
  2時間1分10秒 + 20秒 => 2時間1分30秒
  10秒 * 6 => 60秒 (=1分0秒)
  2分58秒 / 1分29秒 => 2
などのような。

端的には、
 時間と時間の和および差 => 時間
 時間とNumericの積 => 時間
 時間と時間の商 => Numeric
を計算したい次第です。

# 物理単位としての「時間」の演算と言ってもいいです。

単位は、現実問題として、××時間(hour)か、せいぜい日(day)
まであれば手前としては実用的に十分です。実際、年(year)が
出てくると、どの定義を採用するか、という不確定性が出てきて
混乱を招きそうですし……。

そういうライブラリまたはクラスがきっとあるだろう、と思って
検索してみたのですが、適当なものが見つかりませんでした。

標準クラスの Timeは、差分としての時間ではなく、
暦という座標における時刻ですよね。
Timeクラスにおいて、差(-)のメソッドは定義されていますが
(秒をNumericで返す)、和は定義されていないようですし、
まして積や商は定義されていません。Timeが時刻である以上、
仕様としてそうあるべきもの、と納得します。

アドバイスやコメント頂ければ幸いです。

坂野正明




In This Thread