Rails计算时差
我尝试过这样的代码,但它不起作用:
require 'time_diff' cur_time = Time.now.strftime('%Y-%m-%d %H:%M') time_diff_components = Time.diff(@art.datetime_of_update, Time.parse(cur_time)) if @art.PRICEM.to_f >= eprice.to_f || @art.PRICEM.blank? && time_diff_components[:hour] < 3 &&
但是timediff是0,在db时间看起来像这样:
2012-08-28 19:53:12
如何计算现在和db之间的小时差异?
首先,你应该看看这两行:
cur_time = Time.now.strftime('%Y-%m-%d %H:%M') time_diff_components = Time.diff(@art.datetime_of_update, Time.parse(cur_time))
为什么要格式化时间然后只使用该值作为解析操作的输入? 当然,写下来会更简单 – 也不那么脆弱 –
time_diff_components = Time.diff(@art.datetime_of_update, Time.now)
我不知道为什么Time.diff
不适合你(我不是Ruby开发者),但如果目的是检查文章是否在“不到3小时前”更新,那么有一个更简单的方法:从当前时间减去三个小时,并将文章的更新时间与该限制进行比较:
limit_time = Time.now + 3.hours if @art.PRICEM.to_f >= eprice.to_f || @art.PRICEM.blank? && @art.datetime_of_update >= limit_time
如果您不必确切,可以使用Rails的time_ago_in_words
助手。
time_ago_in_words(Time.now - 3.hours) #=> about 3 hours
当然,根据时差,这也可以返回’分钟’,’天’等。