快速的问题。我正在使用distance_of_time_in_words帮助器来检查一个对象创建的天数。这工作正常,但我不希望它必须去24小时才算天,但希望它数到“1”天,一旦它是“00:00”Rails DateTime帮手逻辑
eg distance_of_time_in_words(“2016-08-11 11 :00“,”2016-08-12 00:00“)应该是1天,但是13小时
我希望一旦它通过”00:00“它应该算作1天?
快速的问题。我正在使用distance_of_time_in_words帮助器来检查一个对象创建的天数。这工作正常,但我不希望它必须去24小时才算天,但希望它数到“1”天,一旦它是“00:00”Rails DateTime帮手逻辑
eg distance_of_time_in_words(“2016-08-11 11 :00“,”2016-08-12 00:00“)应该是1天,但是13小时
我希望一旦它通过”00:00“它应该算作1天?
您可以使用
time_ago_in_words(date_item_was_created.at_midnight)
time_ago_in_words让你放弃加入“现在”时间*,并通过移动创建的,在可追溯至午夜,你会经过一个在接下来的午夜,标记为 。根据API doc,它应该给你一整天的任何时间,这听起来就像你在做什么。
*如果您未比较当前时间,则可以继续使用distance_of_time_in_words。
哦智能智能所有我真正需要的是at_midnight –
这就是你的意思,我猜。
def distance_of_time_in_words(time1,time2)
d1 = Time.parse(time1.to_s).to_date.strftime("%d").to_i
d2 = Time.parse(time2.to_s).to_date.strftime("%d").to_i
seconds = Time.parse(time2.to_s)- Time.parse(time1.to_s)
hours = seconds/3600
if d2-d1 >= 1
return "#{(d2-d1).to_s} days"
else
return "#{hours.to_s} hours"
end
end
请记住,您建议的逻辑强烈依赖于观察者所在的时区。如果您从服务器提供此值,则很可能您的访问者不在同一个时区。 (考虑到......是否需要满足这个任意要求的自定义逻辑和努力真的值得吗?) –
非常真实的会记住这一点...但是现在只能使用我的时区。感谢您指出这一点 –