2009-09-28 14 views
5

एक विशिष्ट प्रारूप में स्ट्रिंग "28/09/2009" से DateTime को कैसे परिवर्तित करें? पूर्व: मैं "2009-09-28 17:30:40" को डेटटाइम में कनवर्ट करना चाहता हूं। मैं "28/09/2009 17:30:40" को डेटटाइम में कनवर्ट करना चाहता हूं। मैं "200 9 0 9 28 17:30:40" को डेटटाइम में कनवर्ट करना चाहता हूं।एक स्ट्रिंग को सी # में एक विशिष्ट दिनांक समय प्रारूप में कैसे परिवर्तित करें?

कई संभावित प्रारूप हैं। मैंने यह कोशिश की:

string[] formats = new string[] {"yyyymmdd","yyyymmddThhmmss","yyyy/mm/dd hh:mm:ss","yyyy/mm/dd","yyyy-mm-dd hh:mm:ss","yyyy-mm-dd"}; 
IFormatProvider culture = new CultureInfo("en-US", true); 
DateTime formattedDate = DateTime.ParseExact(aDate, formats, culture, DateTimeStyles.None); 

यह उदाहरण संदेश के साथ एक अपवाद फेंकता है "स्ट्रिंग को वैध दिनांक समय के रूप में पहचाना नहीं गया था"।

उपरोक्त कोड में क्या गलत है?

+0

Falaí Brazuca:

पूरा प्रारूप स्ट्रिंग संदर्भ यहां देखें! :) क्या आप हमें अपने परिदृश्य पर थोड़ा और जानकारी दे सकते हैं? क्या आपको एक ही संदर्भ के साथ सभी तीन प्रारूपों में तिथियां मिलती हैं? –

+0

फाला एआई .... मुझे एक एक्सएमएल दस्तावेज़ पढ़ने की जरूरत है। इस दस्तावेज़ में तार हैं जो तिथियों का प्रतिनिधित्व करते हैं। लेकिन ये तिथियां कई प्रारूपों में हो सकती हैं। मुझे इन प्रारूपों की पहचान करना है और तारों को डेटटाइम में परिवर्तित करना है। –

उत्तर

12

आपके प्रारूपों में से कोई भी दिन पहले नहीं रखता है, जैसे: "dd/MM/yyyy"

पूंजी 'एम' को भी ध्यान दें, क्योंकि निम्न मामला 'मिनट' मिनटों के लिए है। आपको अपने घंटों के साथ एक ही समस्या है; चूंकि आपके नमूने 24 घंटे का उपयोग करते हैं, आपको पूंजी 'एच' की आवश्यकता होती है।

आपका प्रारूप स्ट्रिंग सरणी इस तरह दिखना चाहिए:

string[] formats = {"dd/MM/yyyy", "yyyy-MM-dd HH:mm:ss", "dd/MM/yyyy HH:mm:ss", "yyyyMMdd HH:mm:ss"}; 

उन प्रारूपों वास्तव में अपने आपूर्ति नमूना तार से मेल खाते हैं।

इसके अतिरिक्त, आप शायद इस मामले में en-US के बजाय इनवेरिएंट संस्कृति का उपयोग करना चाहते हैं। अन्यथा, आपके प्रारूप तारों में '/' वर्ण वास्तव में एक संस्कृति-विशिष्ट दिनांक विभाजक है, जो उपयोगकर्ता अपने स्थानीय सिस्टम पर अधिक सवारी कर सकता है।

अंत में, चूंकि आपको स्पष्ट रूप से तारों से मेल खाने में परेशानी हो रही है, तो आप TryParseExact() का उपयोग करना चाहेंगे, जो सटीक पार्स की तरह काम करता है लेकिन मूल्य लौटने के बजाय out पैरामीटर का उपयोग करता है, ताकि यह एक बुलियन लौटा सके अपवाद फेंकने की बजाय सफलता या विफलता को इंगित करने के लिए।
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

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

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