【发布时间】:2013-02-04 16:23:47
【问题描述】:
由于某种原因,比较总是失败,请从 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
任何帮助将不胜感激
【问题讨论】:
-
@game.game_date.to_datetime > Time.zone.now改为(使用您的时区) -
试过了,结果一样,没错。 Time.zone.now 给了我(2013 年 2 月 19 日星期二 20:47:24 UTC +00:00)和@game.game_date.to_datetime(2013 年 2 月 19 日星期二 23:15:00 +0000)
-
DateTime.now 给出您所在时区的时间。所以在这种情况下时区是
+0330,这意味着当前的UTC时间将是Tue, 19 Feb 2013 20:18:38 +0000,它小于Tue, 19 Feb 2013 23:15:00 +0000。 -
你能推荐我如何处理它并将它与 DateTime.now 进行比较吗?或者如何设置一个新的时区就像 DateTime.now 结果一样,甚至无论如何都要以某种方式禁用时区?我只是希望结果以某种方式是错误的
标签: ruby-on-rails ruby ruby-on-rails-3 timezone