🗂

Ruby on Railsで時間を15分単位で切り上げる方法

2022/11/24に公開

Ruby on Railsで時間を15分単位で切り上げる方法

Railsで、Timeオブジェクトを15分間隔で切り上げて丸める必要があったので、メモ。
こういうどうでもいいピンポイントな処理って、検索してもなかなか見つからないですよね。

やりたいこと

Timeオブジェクトを、下記のルールで切り上げしたい。
0分 -> 0分
1~15分 -> 15分
16~30分 -> 30分
31~45分 -> 45分
46~59分 -> 60分 (1時間プラスされる)

(例)
10:07 -> 10:15
10:31 -> 10:45
10:55 -> 11:00

結論

綺麗な計算なんか必要ねえ!!!力こそパワーだ!!!


# Timeオブジェクトをメソッドにおくるだけ。
time_ceil_quarter(Time.current)

# 15分毎に切り上げるメソッド
def time_ceil_quarter(time)
  min = time.min
  
  case min
  when 1..15
    q = 15
  when 16..30
    q = 30
  when 31..45
    q = 45
  when 46..59
    q = 60
  else
    q = 0
  end
  
  time += (q-min).minutes
end

以上

解説

Timeオブジェクトの分(min)を取得して、切り上げ先の数値との差分をプラスしているだけです。

書いた経緯

gemを用いる記事はあったのですが、gem追加できない案件で必要だったため、ゴリ押ししました。

お役にたてましたら、いいね押していただけるとモチベ上がります!

Discussion