Rails 日期时间辅助逻辑
Rails DateTime helper logic
快速提问。我正在使用 distance_of_time_in_words 助手来检查创建对象的天数。这工作正常,但我不希望它在计算一天之前必须经过 24 小时,但希望它在“00:00”
后计算“1”天
eg distance_of_time_in_words("2016-08-11 11:00", "2016-08-12 00:00") 应该是 1 天,但它是 13 小时
我希望一旦它通过“00:00”就应该算作 1 天?
我猜这就是你的意思。
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
您也许可以使用
time_ago_in_words(date_item_was_created.at_midnight)
time_ago_in_words 允许您放弃添加 'now' 时间*,并将创建日期移回午夜,您将跨越一天标记
在下一个午夜。根据 API doc,它应该给你 'round' 天的时间来处理一天中的任何事情,这听起来像你想要的。
*如果您不与当前时间进行比较,您可以继续使用distance_of_time_in_words。
快速提问。我正在使用 distance_of_time_in_words 助手来检查创建对象的天数。这工作正常,但我不希望它在计算一天之前必须经过 24 小时,但希望它在“00:00”
后计算“1”天eg distance_of_time_in_words("2016-08-11 11:00", "2016-08-12 00:00") 应该是 1 天,但它是 13 小时
我希望一旦它通过“00:00”就应该算作 1 天?
我猜这就是你的意思。
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
您也许可以使用
time_ago_in_words(date_item_was_created.at_midnight)
time_ago_in_words 允许您放弃添加 'now' 时间*,并将创建日期移回午夜,您将跨越一天标记 在下一个午夜。根据 API doc,它应该给你 'round' 天的时间来处理一天中的任何事情,这听起来像你想要的。
*如果您不与当前时间进行比较,您可以继续使用distance_of_time_in_words。