Я должен сделать простое различие между двумя датами:
Date.parse("2009-06-20") - Date.today
Это дает мне разницу дат в днях.
Любой знает способ легко преобразовать это вследующий формат:
The event occurred X years, Y months and Z days ago
Спасибо.
Нашел ответ здесь:
Более точное расстояние_of_time_in_words
с этим камнем:
https://github.com/radar/dotiw
Возможно, вы ищете distance_of_times_in_words
Существует RubyGem, который возвращает разницу во времени в хэше, например {: year => 0,: month => 0, ...}
Ссылка: https://rubygems.org/gems/time_diff
Это пример разницы в днях, часах, секундах.Добавьте поля, которые вам нужны.
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 есть решение, но мне тяжело требовать всего этого мамонта для такой тривиальной задачи.