🌟

ActiveSupport で日付や日時の特定の値だけを変更する

2024/11/05に公開

日付や時刻で特定の値のみを変更したい場合に Date#changeTime#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

関連

GitHubで編集を提案

Discussion