タグ
RubyRuby on Rails
投稿日
August 18, 2018
著者
💩 うんち
日付が常に付きまとうRubyでは時間を扱うのは少し大変です。
「ある時間より早い場合だけ切り上げる」といったような処理は、 Time#change
と Array#max
を組み合わせることで、うまく処理が作れるようになります。
# 9時より前の場合
time = Time.parse('2018/08/18 8:55 +09:00')
[time, time.change(hour: 9, min: 0, sec: 0)].max
# => 2018-08-18 09:00:00 +0900
# ちょうど
time = Time.parse('2018/08/18 9:00 +09:00')
[time, time.change(hour: 9, min: 0, sec: 0)].max
# => 2018-08-18 09:00:00 +0900
# 9時より後の場合
time = Time.parse('2018/08/18 9:03 +09:00')
[time, time.change(hour: 9, min: 0, sec: 0)].max
# => 2018-08-18 09:03:00 +0900
Array#min
を使えば逆のことも可能です。