Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

DateTimeで一時間ズラしたい場合

DateTimeオブジェクトに+1しても、日付が進むだけです。
一時間ずらしたい場合は有理数を扱うRationalクラスをつかいます。

require 'pp'
require 'date'
pp (DateTime.new(2014,1,8,19,00,00) + Rational(1, 24)).hour
#=> 20

1日 割る 24 は 1時間というわけですね。
同じ要領で分や秒も指定できます。

pp (DateTime.new(2014,1,8,19,00,00) + Rational(1, 24 * 60)).min 
#=> 1
pp (DateTime.new(2014,1,8,19,00,00) + Rational(1, 24 * 60 * 60))
#=> #<DateTime: 2014-01-08T19:00:01+00:00 ((2456666j,68401s,0n),+0s,2299161j)>