Ответ 1
Нашел ответ здесь:
Более точные distance_of_time_in_words
с этим камнем:
Мне нужно сделать простое различие между двумя датами:
Date.parse("2009-06-20") - Date.today
Это дает мне разницу в датах в днях.
Любой знает, как легко преобразовать его в следующий формат:
The event occurred X years, Y months and Z days ago
Спасибо.
Нашел ответ здесь:
Более точные distance_of_time_in_words
с этим камнем:
Возможно, вы ищете distance_of_times_in_words
Существует RubyGem, который возвращает разницу во времени в хеше, например {: year = > 0,: month = > 0,...}
Это пример разницы в днях, часах, секундах. Добавьте поля, которые вам нужны.
def calculate_difference
minutes = (Date.parse("2009-06-20") - Date.today).to_i / 60
days = minutes / (24*60)
minutes -= days * 24*60
hours = minutes / 60
minutes -= hours * 60
"#{days}d#{hours}h#{minutes}m"
end
Я не знаю ни одного стандартного, правильного способа сделать это. Как ни странно, стандартная библиотека Ruby имеет класс Date, но без функции DateSpan. У Rails есть решение, но мне кажется, что мне больно требовать этого огромного мамонта для такой тривиальной задачи.