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

时间:2010-07-19 06:54:40

标签: ruby-on-rails ruby datetime

我想知道在Rails中是否有办法计算时间戳,如半分钟前,2分钟前,1天前等等。有点像twitter实时日期戳。

我想知道Ruby / Rails是否具有用于此类日期时间转换的内置函数?

3 个答案:

答案 0 :(得分:170)

您可以使用:

10.minutes.ago
2.days.since

或者在你的观点中你有帮助者:

distance_of_time_in_words(from_time, to_time)
time_ago_in_words(from_time)

查看the API了解详情和更多选项。

答案 1 :(得分:8)

您可以使用from_nowTime.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 的{​​{3}}别名以及许多可用方法,使用可用方法获取过去或将来的时间

Option Explicit

Sub AtomDistance()
'
' AtomDistance Macro1
'

'
Dim i As Integer
Dim j As Integer
Dim Distance As Double

Dim Column As String
Column = InputBox("Which column you want to print results(put a letter)?")
Dim MyCell11 As String
Dim MyCell12 As String
Dim MyCell13 As String

Dim MyCell21 As String
Dim MyCell22 As String
Dim MyCell23 As String

Dim MyCell3 As String
j = 9
For i = 4 To 12

MyCell3 = Column & i

MyCell11 = "B" & i
MyCell12 = "C" & i
MyCell13 = "D" & i

MyCell21 = "B" & j
MyCell22 = "C" & j
MyCell23 = "D" & j

Distance = (((Range(MyCell11).Value - Range(MyCell21).Value) ^ 2) + ((Range(MyCell12).Value - Range(MyCell22).Value) ^ 2) + ((Range(MyCell13).Value - Range(MyCell23).Value) ^ 2)) ^ 0.5


If i Mod 4 = 0 Or j Mod 4 = 0 Then

    Range(MyCell3).Value = Distance
End If

j = j + 1

Next i

检查ago

中的所有可用方法

答案 2 :(得分:1)

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