如何将参数的日期时间与今天的日期进行比较?

时间:2013-01-05 04:04:22

标签: ruby-on-rails ruby-on-rails-3

现在我正试图制作这样的辅助方法 如何将参数的日期时间与今天的日期进行比较?

def todate_datetime(date_time)
    date_time = Date.today ? "<font color='red'>#{date_time}</font>" : date_time
end

更新

查看

  

&lt;%= today_datetime(community_topic.updated_at)%&gt;

助手

def today_datetime(date_time)
  date_time == Date.today ? "<font color='red'>#{date_time.to_s(:ct)}</font>" : date_time.to_s(:ct)
end

1 个答案:

答案 0 :(得分:4)

从ruby 1.9.2开始,您可以直接将DateTime对象与ruby中的Date对象进行比较,例如:试试irb:

require 'date'
today = DateTime.new(2013,1,4)
 => #<DateTime: 2013-01-04T00:00:00+00:00 ((2456297j,0s,0n),+0s,2299161j)> 
today == Date.today
=> true

但是,Rails有自己的DateTime对象(APIdock Rails DateTime)。一种选择是通过to_date方法将Rails对象转换为日期

那么帮助器方法可能如下所示:

def todate_datetime(date_time)
  date_time.to_date == Date.today ? "<font color='red'>#{date_time}</font>" : date_time
end

编辑:将date_time参数与DateTime.current.to_date进行比较可能更为准确,因为如果设置为config.time_zone,则考虑def todate_datetime(date_time) date_time.to_date == DateTime.current.to_date ? "<font color='red'>#{date_time}</font>" : date_time end

{{1}}