5

由于某种原因,比较总是失败,请从 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

结果也是 true ,但很明显,从 23:48 > 23:15:00 开始它应该是 false 。

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

任何帮助将不胜感激

4

2 回答 2

7

您的时区有问题:

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

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

试试这个:

@game.game_date.to_datetime > Time.zone.now
于 2013-02-19T20:45:33.820 回答
0

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

@game.game_date.to_datetime > Time.now.to_datetime.change(:offset => "+0000") 
于 2013-02-19T21:57:04.397 回答