Книга: Программирование на языке Ruby

7.6. Преобразование из секунд в более крупные единицы

7.6. Преобразование из секунд в более крупные единицы

Иногда нужно преобразовать заданное число секунд в дни, часы, минуты и секунды. Это можно сделать следующим образом:

def sec2dhms(seсs)
 time = seсs.round           # Отбрасываем микросекунды.
 sec = time % 60             # Извлекаем секунды.
 time /= 60                  # Отбрасываем секунды.
 mins = time % 60            # Извлекаем минуты.
 time /= 60                  # Отбрасываем минуты.
 hrs = time % 24             # Извлекаем часы.
 time /= 24                  # Отбрасываем часы.
 days = time                 # Дни (последний остаток).
 [days, hrs, mins, sec]      # Возвращаем массив [d,h,m,s].
end
t = sec2dhms(1000000)        # Миллион секунд равно...
puts "#{t[0]} days,"         # 11 дней,
puts "#{t[1]} hours,"        # 13 часов,
puts "#{t[2]} minutes,"      # 46 минут
puts " and #{t[3]} seconds." # и 40 секунд.

Можно было пойти и дальше. Но неделю вряд ли назовешь полезной единицей, месяц не слишком точно определен, а год не всегда содержит одно и то же число дней.

Ниже приведена также обратная функция:

def dhms2sec(days,hrs=0,min=0,sec=0)
days*86400 + hrs*3600 + min*60 + sec
end

Оглавление книги

Оглавление статьи/книги

Генерация: 3.063. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз