2012-11-06 15 views
12

मैं एक फ्लैट फ़ाइल से कुछ डेटा आयात करने की कोशिश कर रहा हूं और कुछ अजीब परिणाम प्राप्त कर रहा हूं। एक समय आयात करने पर एक समय आयात करने पर, मुझे इस समय में एक तिथि क्यों डाली जाती है?क्या आपके पास रेल में तारीख के बिना समय हो सकता है?

1.9.3-p286 :008 > v.arrival_time = Time.parse("10:10") 
=> 2012-11-06 10:10:00 -0400 

मेरा अनुमान है कि केवल एक से ही तारीख को रखने के लिए जिस तरह से है, लेकिन कोई रास्ता नहीं सक्रिय रिकॉर्ड स्तंभ प्रकार के बावजूद अपने आप में समय रखने के लिए है कि वहाँ: समय।

1.9.3-p286 :002 > Date.parse("JAN 01 2000") 
=> Sat, 01 Jan 2000 
+0

आप स्ट्रैटाइम का उपयोग कर सकते हैं लेकिन आउटपुट एक स्ट्रिंग ऑब्जेक्ट है: 'टाइम.now.strftime ("% I:% M:% S% z ") # =>" 09:33:00 -0400 " या 'समय देता है .now.strftime ("% I:% एम:% S% Z% z ") # =>" 09:33:00 EDT -0400 "' – MrYoshiji

+1

मैंने इस मुद्दे पर भी भाग लिया है , और मैंने केवल उस समय स्ट्रिंग को कन्वर्ट करने के लिए कोड लिखा है जिसे आप सेकेंड की संख्या के पूर्णांक मान में प्राप्त कर रहे हैं। स्ट्रिंग मैनिपुलेशन करना बहुत आसान है, और भी अधिक यदि आप जानते हैं कि यह हमेशा एचएच: एमएम के रूप में है। – MrDanA

उत्तर

8

रूबी में Time वस्तु "Unix Time" का उपयोग करता है 1 जनवरी, 1970 00:00 यूटीसी के बाद से सेकंड के रूप में अस्थायी अंक स्टोर करने के लिए: वहाँ उन्हें अलग तरह के रूप में रखने के लिए एक रास्ता है। strftime जैसी कई विधियां केवल आउटपुट के प्रारूप को बदलती हैं, लेकिन ऑब्जेक्ट को आंतरिक रूप से कैसे संग्रहीत किया जाता है।

तो आपके पास एक निर्णय लेने का निर्णय है: अपने आयातित डेटा को समय वस्तु के रूप में रखें, और वास्तव में इसमें शामिल होने के बारे में सावधान रहें, या स्ट्रिंग के रूप में अपना डेटा आयात करें लेकिन Time की सभी सुंदर, उपयोगी विशेषताओं को छोड़ दें।

संबंधित मुद्दे