Ruby/Rails 中的“ Ago”日期/时间函数

我想知道在 Rails 中是否有一种方法可以计算时间戳——半分钟前、两分钟前、一天前等等。比如推特上的实时日期戳。

我想知道 Ruby/Rails 是否有一个用于这种日期-时间转换的内置函数?

97683 次浏览

You can use:

10.minutes.ago
2.days.since

Or in your views you have the helpers:

distance_of_time_in_words(from_time, to_time)
time_ago_in_words(from_time)

Check the API for details and more options.

You can use available methods to get the time in past or future using ago, since alias for from_now and many available methods

Time.current
#=> Tue, 20 Sep 2016 15:03:30 UTC +00:00


2.minutes.ago
#=> Tue, 20 Sep 2016 15:01:30 UTC +00:00


2.minutes.since
#=> Tue, 20 Sep 2016 15:05:30 UTC +00:00


1.month.ago
#=> Sat, 20 Aug 2016 15:03:30 UTC +00:00


1.year.since
#=> Wed, 20 Sep 2017 15:03:30 UTC +00:00

Check all the available methods in Time class

distance_of_time_in_words:

from_time = Time.now


distance_of_time_in_words(from_time, from_time + 50.minutes) # => about 1 hour
distance_of_time_in_words(from_time, 50.minutes.from_now) # => about 1 hour
distance_of_time_in_words(from_time, from_time + 15.seconds) # => less than a minute
distance_of_time_in_words(from_time, from_time + 15.seconds, include_seconds: true) # => less than 20 seconds

time_ago_in_words:

time_ago_in_words(3.minutes.from_now) # => 3 minutes
time_ago_in_words(3.minutes.ago) # => 3 minutes
time_ago_in_words(Time.now - 15.hours) # => about 15 hours