gosugod
@gosugod

Конвертация секунд в человеческий формат?

Доброе время суток.
Не могу понять каким образом конвертировать секунды в:
1.месяц + день + час + минута + секунда
2.год + месяц + день + час + минута + секунда
Ломается вся конвертация. Вот код:
when (2628000..31535999) # month
    month = seconds / 2628000
    days = (seconds - month * 2628000) / 86400
    hours = (seconds - month * 2628000 - days * 86400) / 3600
    minutes = (seconds - month * 2628000 - days * 86400 - hours * 3600) / 60
    seconds = (seconds - month * 2628000 - days * 86400 - hours * 3600 - minutes * 60)
    p month, days, hours, minutes, seconds
  when (31536000..1000000000000) # year
    year = seconds / 31536000
  end
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
Перевод количества секунды в количество секунд, минут, часов и дней можно осуществить следующим методом:

# frozen_string_literal: true

# convert seconds to formatted string by days, hours, minutes, seconds
#
# @param [Integer] seconds
# @param [String] template
# @return String
#
# @example
#   format_duration 183_845 # => 2 days 3 hours 4 minutes 5 seconds
def format_duration(seconds, template = '%<days>i days %<hours>i hours %<minutes>i minutes %<seconds>i seconds')
  result = {
    days: seconds / 86_400,
    hours: seconds / 3600 % 24,
    minutes: seconds / 60 % 60,
    seconds: seconds % 60
  }
  format(template, result)
end

puts format_duration 183_845


Обратите внимание, что вы не сможете получить количество месяцев и лет, т. к. год и месяц — не константные величины.
Месяц — это не однозначное количество дней, часов, минут и т. д.
Ответ написан
hint000
@hint000
у админа три руки
Ruby не знаю, напишу на Си. :) Деление целочисленное, оператор % -остаток от деления.
minutes=seconds/60;
 hours=minutes/60;
  days=hours/24;
   months=days/30;
    years=days/365;
   months=months%12;
  days=days%30;
 hours=hours%24;
minutes=minutes%60;
seconds=seconds%60;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы