2010-08-30 15 views
52

मुझे रेल पर रुबी में एक समस्या का सामना करना पड़ रहा है। मैं दिनांक वस्तु पर प्रारूप Tue, 10 Aug 2010 01:20:19 -0400 (EDT) की एक स्ट्रिंग को परिवर्तित करना चाहता हूं।रूबी स्ट्रिंग टू डेट रूपांतरण

क्या वैसे भी मैं ऐसा कर सकता हूं।

  1. Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
  2. Chronic Parser
  3. Ruby: convert string to date
  4. Parsing date from text using Ruby

कृपया मेरे साथ मदद आउट:

यहाँ मैं क्या देखा और कोई भाग्य के साथ निम्नलिखित पर की कोशिश की है है इस।

उत्तर

103

Date.parse विधि के साथ क्या गलत है?

str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)" 
date = Date.parse str 
=> #<Date: 4910837/2,0,2299161> 
puts date 
2010-08-10 

ऐसा लगता है।

यहां एकमात्र समस्या समय क्षेत्र है। आप UTC समय क्षेत्र में तारीख चाहते हैं, तो यह Time वस्तु का उपयोग करने के लिए बेहतर है, मान लीजिए हम स्ट्रिंग है:

str = "Tue, 10 Aug 2010 01:20:19 +0400" 
puts Date.parse str 
2010-08-10 
puts Date.parse(Time.parse(str).utc.to_s) 
2010-08-09 

मैं Date को Time कन्वर्ट करने के लिए सरल तरीका नहीं पा सके।

+0

धन्यवाद Klew और रयान। इसने एकदम जादू की तरह काम किया। मुझे डेट.पर्स से अवगत था, लेकिन इसका इस्तेमाल नहीं किया था। यह मेरे लिए एक सीख है। – dkris

+1

रूबी 1.9 में समय-समय पर कनवर्ट करने के लिए समय # to_date है। – steenslag

12
Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z") 

होना चाहिए: संरचना में

ढूँढें तारीख:

Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z') 
5
str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)" 
str.to_date 
=> Tue, 10 Aug 2010 
+1

यह एक रेल चीज है, रूबी चीज नहीं है मुझे लगता है कि –

+0

हाँ रेल केवल http://apidock.com/rails/String/to_date –

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