如何在Ruby中形成“模糊日期”?

时间:2009-07-18 08:19:05

标签: ruby datetime

如何从RFC 2822格式化(星期六,2009年7月18日10:57:43 +0300)时间戳形成“模糊”日期/时间?

模糊日期我的意思是:“5分钟前”,“2天,15分钟前”。

3 个答案:

答案 0 :(得分:8)

Rails为您的视图提供了一个名为time_ago_in_words的辅助函数,您可以调用该函数从Time对象输出这样的格式。

答案 1 :(得分:3)

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 :(得分:2)

在ruby中有一些非常强大的日期/时间解析器(不幸的是有点难以谷歌(TM))

http://chronic.rubyforge.org/

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

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