Как сформировать «нечеткое свидание» в Ruby? - PullRequest
3 голосов
/ 18 июля 2009

Как мне сформировать «нечеткую» дату / время из метки времени в формате RFC 2822 (сб, 18 июля 2009 10:57:43 +0300)?

С нечеткой датой я имею в виду: «5 минут назад», «2 дня, 15 минут назад».

Ответы [ 3 ]

8 голосов
/ 18 июля 2009

Rails дает вашим представлениям вспомогательную функцию с именем time_ago_in_words, которую вы можете вызвать для вывода именно такого формата из Time объекта.

3 голосов
/ 18 июля 2009
def fuzzy_date(date)
  date = Date.parse(date, true) unless /Date.*/ =~ date.class.to_s
  days = (date - Date.today).to_i
  return 'today'     if days >= 0 and days < 1
  return 'tomorrow'  if days >= 1 and days < 2
  return 'yesterday' if days >= -1 and days < 0
  return "in #{days} days"      if days.abs < 60 and days > 0
  return "#{days.abs} days ago" if days.abs < 60 and days < 0
  return date.strftime('%A, %B %e') if days.abs < 182
  return date.strftime('%A, %B %e, %Y')
end
2 голосов
/ 19 июля 2009

В ruby ​​есть несколько действительно мощных анализаторов даты / времени (к сожалению, для Google (TM) это довольно сложно)

http://chronic.rubyforge.org/

http://www.ahabman.com/blog/2009/06/ruby-duration/

http://github.com/flogic/timely/tree/master

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