DateTime に月、日、時、分、秒を足す。
DateTimeに秒を足す方法がなかなか見つからなくて苦労した。結局ActiveSupportのソースから探した。
Rationalを足せば良い。
require 'date' t = DateTime.now # 1ヶ月後 t >> 1 # 1日後 t + 1 # 1時間後 (1/24日後) t + Rational(1, 24) # 1分後 (1/1440日後) t + Rational(1, 24 * 60) # 1秒後 (1/86400日後) t + Rational(1, 24 * 60 * 60)
秒を足すことばかり考えてたけど、「Ruby DateTime 時間」で検索したらあっさり見つかった。
でもマニュアルにも書いといてほしいです。いっぺんTimeに変換しなくちゃ駄目なのかと思いかけた。
ちなみに、Floatでもいけるかなーと思ったけど、
t = DateTime.new(2040, 1, 1) p (t + 0.5).to_s "2040-01-01T12:00:00+00:00"
これだと誤差がでるみたい。
p (t + 0.5 + Rational(1, 24)).to_s "2040-01-01T12:59:59+00:00" p (t + Rational(1,2) + Rational(1, 24)).to_s "2040-01-01T13:00:00+00:00"
Floatの0.5は約0.5だからなんだろうけど、、間違えそうでおそろしい。