読者です 読者をやめる 読者になる 読者になる

ノンカフェインであなたにやさしい

Rails,HTML,JavaScript,jQuery,PHP,CakePHPなど

RailsのTimeクラスChangeメソッドについて

TimeクラスChangeメソッドの挙動について
まずは年月日を変更してみる。

Time.new(2016, 3, 15, 10, 10, 10).change(year: 2015)
# => 2015-03-15 10:10:10 +0000

Time.new(2016, 3, 15, 10, 10, 10).change(month: 1)
# => 2016-01-15 10:10:10 +0000

Time.new(2016, 3, 15, 10, 10, 10).change(day: 1)
# => 2016-03-01 10:10:10 +0000

指定した年月日に変更できて便利!
時間を変更してみる。

Time.new(2016, 3, 15, 10, 10, 10).change(hour: 1)
# => 2016-03-15 01:00:00 +0000

分、秒まで変わった…
分、秒を変更してみると

Time.new(2016, 3, 15, 10, 10, 10).change(min: 1)
# => 2016-03-15 10:01:00 +0000

Time.new(2016, 3, 15, 10, 10, 10).change(sec: 1)
# => 2016-03-15 10:10:01 +0000

hour,minを変更するとそれ以下の値が0になる。
apidockを確認
change (Time) - APIdock

Returns a new Time where one or more of the elements have been changed according to the options parameter. The time options (:hour, :min, :sec, :usec, :nsec) reset cascadingly, so if only the hour is passed, then minute, sec, usec and nsec is set to 0. If the hour and minute is passed, then sec, usec and nsec is set to 0. The options parameter takes a hash with any of these keys: :year, :month, :day, :hour, :min, :sec, :usec :nsec. Path either :usec or :nsec, not both.

時間のオプションを指定した場合、それ以下は0に設定するぞオラァ(意訳)
とのこと。
つまり時間変更する際に0分0秒が良ければ :min, :sec の指定はいらいなってことなんですね。