Ruby中的"Ago"日期/时间函数

kap*_*pso 86 ruby datetime ruby-on-rails

我想知道是否有一种方式在Rails中计算时间戳 - 半分钟前,2分钟前,1天前等等.像twitter实时日期戳.

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

Tob*_*ede 176

您可以使用:

10.minutes.ago
2.days.since
Run Code Online (Sandbox Code Playgroud)

或者在您的观点中,您有帮助者:

distance_of_time_in_words(from_time, to_time)
time_ago_in_words(from_time)
Run Code Online (Sandbox Code Playgroud)

检查API以获取详细信息和更多选项.

  • 从Rails 3开始,它现在是`10.minutes.ago`而不是分钟. (8认同)
  • 要求'active_support/all'或者如果使用bundle:gem"activesupport",:require =>"active_support" (7认同)
  • 如果你不在Rails中,`require'active_support'`(至少如果安装了Rails 2.X). (4认同)

Dee*_*ale 8

您可以使用可用方法来获取过去或将来使用的时间ago,since别名from_now和许多可用方法

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 
Run Code Online (Sandbox Code Playgroud)

检查Time类中的所有可用方法


Dor*_*ian 5

单词时间距离

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)