Как оценить разницу в датах по годам, месяцам и дням (рубин)? - PullRequest
14 голосов
/ 22 июня 2010

Я должен сделать простое различие между двумя датами:

Date.parse("2009-06-20") - Date.today

Это дает мне разницу дат в днях.

Любой знает способ легко преобразовать это вследующий формат:

The event occurred X years, Y months and Z days ago

Спасибо.

Ответы [ 5 ]

6 голосов
/ 22 июня 2010
5 голосов
/ 22 июня 2010

Возможно, вы ищете distance_of_times_in_words

3 голосов
/ 08 марта 2011

Существует RubyGem, который возвращает разницу во времени в хэше, например {: year => 0,: month => 0, ...}

Ссылка: https://rubygems.org/gems/time_diff

1 голос
/ 22 июня 2010

Это пример разницы в днях, часах, секундах.Добавьте поля, которые вам нужны.

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
0 голосов
/ 22 июня 2010

Я не знаю ни одного стандартного, правильного способа сделать это. Как ни странно, стандартная библиотека Ruby имеет класс Date, но не имеет функциональности DateSpan. У Rails есть решение, но мне тяжело требовать всего этого мамонта для такой тривиальной задачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...