Rails中的DateTime比较失败

Eki*_*bal 5 ruby timezone ruby-on-rails ruby-on-rails-3

由于某种原因,比较总是失败,请从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
Run Code Online (Sandbox Code Playgroud)

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

@game.game_date.to_time > Time.now.to_tim
Run Code Online (Sandbox Code Playgroud)

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

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

任何帮助将受到高度赞赏

MrY*_*iji 7

您遇到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
Run Code Online (Sandbox Code Playgroud)

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

试试这个:

@game.game_date.to_datetime > Time.zone.now
Run Code Online (Sandbox Code Playgroud)