我有一个以分钟为单位的值列表,我希望轻松转换为最接近的匹配,如下所示
10 => 10 minutes
1440 => 1 day
86400 => 2 months
525600 => 1 year
在Rails中有没有简单的方法呢?
答案 0 :(得分:5)
试试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"
答案 1 :(得分:2)
我可能会使用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
它不是(有意)精确,但它已经存在。否则,使用某些除法/模数学来wh自己很容易...
答案 2 :(得分:1)
不要认为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
答案 3 :(得分:0)
看看下面的链接,我认为它有你需要的东西。看看函数distance_of_time_in_words。
http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html