как преобразовать 270 921 секунду в дни + часы + минуты + секунда? (рубин)

У меня есть много секунд. Скажем, 270921. Как я могу отобразить то число, говоря, что это - xx дни, yy часы, zz минуты, ww секунды?

64
задан Radek 22 February 2010 в 10:40
поделиться

2 ответа

Это можно сделать довольно лаконично, используя divmod:

t = 270921
mm, ss = t.divmod(60)            #=> [4515, 21]
hh, mm = mm.divmod(60)           #=> [75, 15]
dd, hh = hh.divmod(24)           #=> [3, 3]
puts "%d days, %d hours, %d minutes and %d seconds" % [dd, hh, mm, ss]
#=> 3 days, 3 hours, 15 minutes and 21 seconds

Вероятно, вы могли бы еще больше очистить его от мусора, используя collect, или, возможно, inject, но когда основная логика состоит из трех строк, это может быть излишеством.

150
ответ дан 24 November 2019 в 15:38
поделиться

В Rails есть помощник, который переводит расстояние времени в слова. Вы можете посмотреть его реализацию: distance_of_time_in_words

10
ответ дан 24 November 2019 в 15:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: