Ruby / Rails: получите время с ближайшим 15-минутным шагом - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь округлить текущее время с ближайшим 15-минутным шагом.

Например, если текущее время «4:37 вечера», я хочу, чтобы оно было округлено до «4:30 вечера». И если бы это было «4:41 вечера», оно должно округляться до «4:45 вечера».

Причина этого в том, что у меня есть выбор HTML с 15-минутными приращениями, и я хочу установить его по умолчанию, чтобы выбрать ближайший вариант по времени.

Я сталкивался с кодом, который работает, но кажется неуклюжим:

increment = 15*60                                          # => 900 (15 min in seconds)
current_time = Time.zone.now                               # => Mon, 27 Aug 2018 17:50:31 EDT -04:00
Time.at((current_time.to_r / increment).round * increment) # => 2018-08-27 17:45:00 -0400

Я удивлен, что нет такой встроенной функции времени, как Time.now.round_to_closest(increment_in_min: 15)

Это там, и я просто скучаю по нему?

1 Ответ

0 голосов
/ 28 августа 2018

Это может показаться неуклюжим, потому что там нужно выполнить несколько математических упражнений на пару строк, но это выглядит для меня отличным решением. Иногда вы должны отказаться от элегантности для функциональности.

...