Rails中的DateTime比较失败

由于某种原因,比较总是失败,请从Rails控制台检查:

irb(main):021:0> @game.game_date.class => ActiveSupport::TimeWithZone irb(main):026:0> @game.game_date => Tue, 19 Feb 2013 23:15:00 UTC +00:00 irb(main):022:0> @game.game_date.to_datetime => Tue, 19 Feb 2013 23:15:00 +0000 irb(main):019:0> DateTime.now => Tue, 19 Feb 2013 23:48:38 +0330 irb(main):020:0> @game.game_date.to_datetime > DateTime.now => true 

怎么比较总是错的? 我也尝试过这个:

 @game.game_date.to_time > Time.now.to_tim 

结果也是如此,但很明显它应该是假的,因为23:48> 23:15:00。

请注意,我在ubuntu和Rails 3.1下使用ruby ruby​​ 1.9.3p0

任何帮助将受到高度赞赏

您遇到TimeZone问题:

 irb(main):022:0> @game.game_date.to_datetime => Tue, 19 Feb 2013 23:15:00 +0000 irb(main):019:0> DateTime.now => Tue, 19 Feb 2013 23:48:38 +0330 

你看,当DateTime.now有+0330时,你的game_date属性有一个+0000 TimeZone

试试这个:

 @game.game_date.to_datetime > Time.zone.now 

它以这种方式对我有用,无论如何不确定它是否是最好的方式,但至少按照我期望的方式工作:

 @game.game_date.to_datetime > Time.now.to_datetime.change(:offset => "+0000")