libro
www.tuyano.com
初心者のためのRubyプログラミング入門

日時とTimeクラス (3/4)

作成:2012-09-01 12:55
更新:2012-09-01 12:55

■日時を使った計算をしよう

日時の値は、ただ日付などを表示するのに使うわけではありません。日時をベースにして、例えば「今日から○○日後」とか、「○○月○○日までどれぐらいある?」というようなことがぱぱっとわかれば随分と実用的なものが作れそうですね。

こうした「日時の計算」は、多く分けて2通りあります。それぞれの計算の仕方について整理して行きましょう。


●日時-日時 の計算
例えば、「○月○日から△月△日まで何日あるか?」というように、2つの日時の差を計算する、ということはよくあります。これは、Rubyでは非常に簡単に行えます。単純に2つのTimeインスタンスを引き算すればいいだけなのです。得られる値は、2つの日時の差を秒換算で表した整数になります。

下のリスト欄に「2つの日時の差を計算する」としてサンプルを挙げておきました。2つのTimeインスタンスを用意し、引き算して、結果を1日の秒数で割っています。これで日数が簡単に得られます。


●日時へ時間を加算・減算する
もう1つは、ある日時に、指定の時間を足したり引いたりする計算でしょう。例えば、「今日から○日後は何日?」といった計算です。これも、Rubyでは普通の足し算引き算で計算できます。Timeインスタンスに、時間を秒数換算で表した整数を足し算引き算すれば、その時間だけ経過した(あるいは戻った)日時を示すTimeが得られます。

下のリスト欄に「日時に加算する」としてサンプルをあげています。ここでは、re = d1 + 100 * (60 * 60 * 24)というようにして100日後の日時を計算してみました。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※2つの日時の差を計算する

d1 = Time.local(2012,1,2,3,45)
d2 = Time.local(2012,2,3,4,56)
re = d2 - d1
puts((re / 60 / 60 / 24).to_s + "日")


※日時に加算する

d1 = Time.local(2012,1,2,3,45)
re = d1 + 100 * (60 * 60 * 24)
puts("100日後:" + re.to_s)

※関連コンテンツ

「初心者のためのRubyプログラミング入門」に戻る