2013-02-19 45 views
5

किसी कारण से में विफल रहता है, तुलना हमेशा असफल, यह बाहर रेल कंसोल से जांचें:दिनांक समय तुलना रेल

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 

परिणाम के रूप में अच्छी तरह से सच था, जबकि यह स्पष्ट है कि यह 23:48> 23:15:00 के बाद से झूठा माना जाता है है।

कृपया ध्यान दें कि मैं गहरे लाल रंग का गहरे लाल रंग का उपयोग कर रहा हूँ 1.9.3p0 ubuntu और रेल 3.1

किसी भी मदद अत्यधिक सराहना की जाएगी

+1

'@game.game_date.to_datetime> समय .zone.now' इसके बजाए (आपके टाइमज़ोन का उपयोग करके) – MrYoshiji

+0

ने कोशिश की, वही परिणाम, जो सच है। Time.zone.now ने मुझे दिया (मंगलवार, 1 9 फरवरी 2013 20:47:24 यूटीसी +00: 00) और @ game.game_date.to_datetime (मंगलवार, 1 9 फरवरी 2013 23:15:00 +0000) –

+1

डेटटाइम.now देता है आपके टाइमज़ोन में समय। तो इस मामले में टाइमज़ोन '+ 0330' है जिसका अर्थ है कि वर्तमान यूटीसी समय' मंगलवार, 1 9 फरवरी 2013 20:18:38 + 0000' होगा जो 'मंगल से कम है, 1 9 फरवरी 2013 23:15:00 + 0000' । –

उत्तर

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 विशेषता में +0000 टाइमज़ोन है, जब डेटटाइम.now में +0330

इसे आज़माएं:

@game.game_date.to_datetime > Time.zone.now 
+0

एक ही परिणाम, सच, Time.zone.now ने मुझे दिया (मंगलवार, 1 9 फरवरी 2013 20:47:24 यूटीसी +00: 00) और @ game.game_date.to_datetime (मंगलवार, 1 9 फरवरी 2013 23:15:00 +0000) –

+0

अच्छा, यह सच है कि 20:47 23:15 से पहले है। यही है ना? – MrYoshiji

+0

ठीक है, आप सही हैं, लेकिन मुझे इसे कैसे बदलना है, मेरा मतलब समय क्षेत्र निर्धारित करना है? –

0

यह मेरे लिए इस तरह से यकीन नहीं काम किया, वैसे भी अगर यह सबसे अच्छा तरीका है लेकिन कम से कम जिस तरह से मैं इसे उम्मीद कर रहा हूँ काम कर रहा:

@game.game_date.to_datetime > Time.now.to_datetime.change(:offset => "+0000")