z jakiegoś powodu, to porównanie nie zawsze należy to sprawdzić z konsoli Rails:porównanie DateTime nie w 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
Jak to się stało, że porównanie jest zawsze źle? Próbowałem to także:
@game.game_date.to_time > Time.now.to_tim
Rezultatem było prawdą, jak również, gdy jest oczywiste, że to ma być fałszywe od 23:48> 23:15:00.
Należy pamiętać, że używam rubin rubin 1.9.3p0 pod Ubuntu i Rails 3.1
Każda pomoc będzie bardzo mile widziane
'@game.game_date.to_datetime> Czasu .zone.now' zamiast (używając swojej strefy czasowej) – MrYoshiji
wypróbowany, ten sam wynik, który jest prawdziwy. Time.zone.now dał mi (wtorek, 19 lutego 2013 20:47:24 UTC +00: 00) i @ game.game_date.to_datetime (wtorek, 19 lutego 2013 23:15:00 +0000) –
DateTime.now daje czas w twojej strefie czasowej. W tym przypadku strefa czasowa to '+ 0330', co oznacza, że bieżącym czasem UTC będzie" Wt, 19 lutego 2013 20:18:38 + 0000 ", który jest mniejszy niż' Wt, 19 lutego 2013 23:15:00 + 0000' . –