🌟
ActiveSupport で日付や日時の特定の値だけを変更する
日付や時刻で特定の値のみを変更したい場合に Date#change
や Time#change
が利用できます。
require "active_support/all"
# 日のみを変更する
pp Date.parse("2020/11/01").change(day: 3)
# => Tue, 03 Nov 2020
Time#change
で時刻を含めた変更ができます。
require "active_support/all"
# 秒のみ変更する
pp Time.parse("2021/03/01 12:34:56").change(sec: 0)
# => 2021-03-01 12:34:00 +0900
ただし 時
が 0
の場合 分
が 0
の場合はそれぞれそれよりも下の値がすべて 0
で丸め込まれるので注意してください。
require "active_support/all"
# 分を 0 にすると秒も 0 になる
pp Time.parse("2021/03/01 12:34:56").change(min: 0)
# => 2021-03-01 12:00:00 +0900
# 時を 0 にすると分秒も 0 になる
pp Time.parse("2021/03/01 12:34:56").change(hour: 0)
# => 2021-03-01 00:00:00 +0900
Discussion