Đối với một số lý do, sự so sánh luôn luôn thất bại, hãy kiểm tra này ra từ Rails console:DateTime so sánh thất bại trong 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
Tại sao mà so sánh luôn luôn là sai trái? Tôi cố gắng này cũng như:
@game.game_date.to_time > Time.now.to_tim
Kết quả là đúng là tốt, trong khi rõ ràng là nó được coi là sai vì 23:48> 23:15:00.
Xin lưu ý rằng tôi đang sử dụng ruby ruby 1.9.3p0 dưới ubuntu và Rails 3.1
Bất kỳ trợ giúp sẽ được đánh giá cao
'@game.game_date.to_datetime> Time .zone.now' thay vào đó (sử dụng múi giờ của bạn) – MrYoshiji
đã thử, kết quả tương tự, điều đó đúng. Time.zone.now đã cho tôi (Thứ Ba, ngày 19 tháng 2 năm 2013 20:47:24 giờ UTC: 00) và @ game.game_date.to_datetime (Thứ Ba, ngày 19 tháng 2 năm 2013 23:15:00 +0000) –
DateTime.now cung cấp thời gian trong múi giờ của bạn. Vì vậy, trong trường hợp này múi giờ là '+ 0330' có nghĩa là thời gian UTC hiện tại sẽ là' Thứ Ba, ngày 19 tháng 2 năm 2013 20:18:38 + 0000' nhỏ hơn 'Thứ Ba, ngày 19 tháng 2 năm 2013 23:15:00 + 0000' . –