如何在Rails中使用相对时间?

17 浏览
0 Comments

如何在Rails中使用相对时间?

我正在编写一个Rails应用程序,但似乎找不到如何计算相对时间的方法,即如果给定一个特定的Time类,它可以计算“30秒前”或“2天前”,或者如果时间超过一个月的话“2008年9月1日”等等。

admin 更改状态以发布 2023年5月24日
0
0 Comments

我已经写了这个,但是需要检查已经提到的现有方法看看它们是否更好。

module PrettyDate
  def to_pretty
    a = (Time.now-self).to_i
    case a
      when 0 then 'just now'
      when 1 then 'a second ago'
      when 2..59 then a.to_s+' seconds ago' 
      when 60..119 then 'a minute ago' #120 = 2 minutes
      when 120..3540 then (a/60).to_i.to_s+' minutes ago'
      when 3541..7100 then 'an hour ago' # 3600 = 1 hour
      when 7101..82800 then ((a+99)/3600).to_i.to_s+' hours ago' 
      when 82801..172000 then 'a day ago' # 86400 = 1 day
      when 172001..518400 then ((a+800)/(60*60*24)).to_i.to_s+' days ago'
      when 518400..1036800 then 'a week ago'
      else ((a+180000)/(60*60*24*7)).to_i.to_s+' weeks ago'
    end
  end
end
Time.send :include, PrettyDate

0
0 Comments

看起来你正在寻找ActiveSupport中的time_ago_in_words方法(或distance_of_time_in_words),你可以通过下面的方式调用它:

<%= time_ago_in_words(timestamp) %>

0