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

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

ほら、あなたの game_date 属性には+0000TimeZone がありますが、DateTime.now には TimeZoneがあります。+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 に答える