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 

当然,根据时差,这也可以返回’分钟’,’天’等。