我有一个以分钟为单位的值列表,我想轻松地将其转换为最接近的匹配项,如下所示
10 => 10 minutes
1440 => 1 day
86400 => 2 months
525600 => 1 year
在 Rails 中是否有任何简单的方法可以做到这一点?
我有一个以分钟为单位的值列表,我想轻松地将其转换为最接近的匹配项,如下所示
10 => 10 minutes
1440 => 1 day
86400 => 2 months
525600 => 1 year
在 Rails 中是否有任何简单的方法可以做到这一点?
试试distance_of_time_in_words
。它直接对两个Time
对象进行操作,计算差异,但你总是可以这样做:
include ActionView::Helpers::DateHelper
def minutes_in_words(minutes)
distance_of_time_in_words(Time.at(0), Time.at(minutes * 60))
end
minutes_in_words(10)
=> "10 minutes"
minutes_in_words(1440)
=> "1 day"
minutes_in_words(86400)
=> "2 months"
minutes_in_words(525600)
=> "about 1 year"
我可能会使用time_ago_in_words
一些数学来获得正确的操作日期......
http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-time_ago_in_words
time_ago_in_words(3.minutes.from_now) # => 3 minutes
time_ago_in_words(Time.now - 15.hours) # => about 15 hours
time_ago_in_words(Time.now) # => less than a minute
它不是(故意)精确的,但它已经存在了。否则,使用一些除法/模数数学很容易自己动手......
不要认为 RoR 有这个,但这很容易
def to_days(minutes)
minutes / (60*24)
end
def to_months(minutes)
minutes / (60*24*30)
end
def to_years(minutes)
minutes / (60*24*365)
end
看看下面的链接,我想它有你需要的。查看函数 distance_of_time_in_words。
http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html