我想基于created_at得到以下结果:如何在轨道前几分钟或几小时或几周内显示?
1-59M
1-24H
1-999 + W
例如,如果后5分钟老它会说5M
。如果是15个小时,它会说:15H
,最后如果是52周,它会说52W
。
奖励:我会怎么做它的工作有:https://github.com/basecamp/local_time
我想基于created_at得到以下结果:如何在轨道前几分钟或几小时或几周内显示?
1-59M
1-24H
1-999 + W
例如,如果后5分钟老它会说5M
。如果是15个小时,它会说:15H
,最后如果是52周,它会说52W
。
奖励:我会怎么做它的工作有:https://github.com/basecamp/local_time
你只是想要几周,几小时或几分钟?这个怎么样(它会在助手文件去)
def short_age_string(time)
diff = Time.now - time #value is seconds (float)
if diff >= 0
result = "1-"
else
result = "1+"
end
diff = diff.abs.to_i
if diff >= 604800 #seconds in a week
weeks = diff/604800
return "#{result}#{weeks}#{"+" if weeks >= 999}W"
elsif diff > 3600 #seconds in an hour
return "#{result}#{diff/3600}H"
else
return "#{diff/60}#{minutes}M"
end
end
我把使它返回“1 + ......”在未来时间的自由。
谢谢,有关如何使用它的任何想法:https://github.com/basecamp/local_time? –
这给你两次之间的“距离”,所以用户所在的时区不应有任何区别。您的数据库时间将使用UTC,这也是Time.now应该返回的时间。基本上,只要'time'和'Time.now'使用相同的时区(他们应该默认情况下我应该相信它们:它们都只是“自时代以来的秒数”) - 请参阅http://en.wikipedia.org/wiki/Epoch_(reference_date)#Computing),那么数学仍然可以工作。 –
看看http://stackoverflow.com/questions/195740/how-do-you-do-relative-time-in-rails – Yule