Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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)>