Ruby on Railsで、ある時間より早い場合だけ切り上げる
Ruby on Railsで、ある時間より早い場合だけ切り上げる

Ruby on Railsで、ある時間より早い場合だけ切り上げる

タグ
RubyRuby on Rails
投稿日
Aug 18, 2018
著者
💩 うんち

日付が常に付きまとうRubyでは時間を扱うのは少し大変です。

「ある時間より早い場合だけ切り上げる」といったような処理は、 Time#changeArray#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 を使えば逆のことも可能です。