当我将Rails time_ago_in_words方法传递给大于1个月前的日期时,它会返回一个字符串,其内容类似于“约N个月”。
无论如何有这种方法只能在几天之内返回日期参数的距离,即30天前,50天前,90天前等...
答案 0 :(得分:4)
您可以在time_ago_in_words
:
def days_ago_in_words(time)
days = ((Time.now - time.to_time) / 86400.0).round
if days > 1
I18n.t :x_days, :count => days, :scope => :'datetime.distance_in_words'
else
time_ago_in_words(time)
end
end
I18n键和范围来自distance_of_time_in_words
,因此您无需定义自己的键。
答案 1 :(得分:3)
class Time
def days_ago
diff = Time.now - self
return ago if diff < 86400
"#{"day".pluralize(diff.to_i / 86400)} ago"
end
end
class Date
def days_ago
to_time.days_ago
end
end
或作为帮助者:
def days_ago(date)
diff = Time.now - date.to_time
return date.ago if diff < 86400
"#{"day".pluralize(diff.to_i / 86400)} ago"
end
答案 2 :(得分:1)
但是,您的情况实际上比辅助逻辑更简单。您可以创建一个新的帮助程序,从当前日期中减去旧日期,然后将得到的秒数除以(60 * 60 * 24),这是一天中的秒数,您就可以得到结果。