2014-04-08 146 views

回答

1

你只是想要几周,几小时或几分钟?这个怎么样(它会在助手文件去)

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 + ......”在未来时间的自由。

+0

谢谢,有关如何使用它的任何想法:https://github.com/basecamp/local_time? –

+0

这给你两次之间的“距离”,所以用户所在的时区不应有任何区别。您的数据库时间将使用UTC,这也是Time.now应该返回的时间。基本上,只要'time'和'Time.now'使用相同的时区(他们应该默认情况下我应该相信它们:它们都只是“自时代以来的秒数”) - 请参阅http://en.wikipedia.org/wiki/Epoch_(reference_date)#Computing),那么数学仍然可以工作。 –

1

我相信你会使用strftimei18n

根据strftimer来管理它,你需要使用%-dH%-dM%-dD%-dW保证格式,你的愿望:

#view 
<%=l record.created_at, format: :small %> 

#config/locales/en.yml 
time: 
    small: %-dH 

我试图测试这个&它只会带回初始数字。需要更多的测试,但是应该让你处于正确的轨道上

+0

这不是说你需要每种类型的条件吗?例如,秒,分,日,星期?这将如何工作:https://github.com/basecamp/local_time? –

相关问题