2009-10-08 14 views
5

मेरे पास एक स्ट्रिंग है, "200 9 -108 08: 22: 02Z", जो ISO 8601 प्रारूप में है।आईएसओ 8601 स्ट्रिंग को .NET में डेटटाइम पर पार्स करना?

मैं इस प्रारूप को पार्स करने के लिए डेटटाइम का उपयोग कैसे करूं?

+4

आईएसओ 8601 भी समय क्षेत्र ऑफ़सेट निर्दिष्ट करने की अनुमति देता है (उदाहरण के लिए "200 9 -108T12: 52: 02 + 04: 30" उपर्युक्त के समान होगा)। हालांकि, इनमें से कोई भी जवाब इस पते को संबोधित नहीं करता है ... –

उत्तर

4

नहीं, यह आईएसओ 8601 नहीं है। Valid ISO 8601 प्रतिनिधित्व T समय और दिनांक भागों के बीच होगा।

DateTime मूल रूप से मान्य आईएसओ 8601 प्रारूपों को संभाल सकता है। हालांकि, अगर आप इस विशेष प्रतिनिधित्व से फंस गए हैं, तो आप DateTime.ParseExact आज़मा सकते हैं और प्रारूप स्ट्रिंग की आपूर्ति कर सकते हैं।

+3

चीयर्स लेकिन विकी दोनों प्रारूपों को दिखाता है – Kaya

+2

मैं "यू" या "एस" का उपयोग करके अपनी स्ट्रिंग को पार्स करने में असमर्थ था, हालांकि अंतरिक्ष के साथ टी को प्रतिस्थापित करना आसानी से किया जाता है। ऐसा लगता है कि काम करता है। मैं .NET 2.0 के साथ वीबी .NET का उपयोग कर रहा हूँ। –

+0

@romkyns उत्तर मेरे लिए सही लगता है। आपके "आईएसओ -8601 मानक" दस्तावेज़ से मैंने अध्याय 3.4.3 और 4.3.2 में पढ़ा है कि दिनांक और समय दिखाए जाने पर "टी" की आवश्यकता होती है। उदाहरण बी.1.3 भी देखें। और प्रश्न में प्रस्तुत प्रारूप में तारीखों को मूल रूप से संभाला जाता है। – StefanG

19
string txt= "2009-10-08 08:22:02Z"; 
DateTime output = DateTime.ParseExact(txt, "u", System.Globalization.CultureInfo.InvariantCulture); 

दिनांक समय वर्ग इस प्रारूप

मैं आईएसओ प्रारूप (टी विभाजक के साथ) के लिए लगता है, का उपयोग करें "एस" के बजाय "यू" के लिए यू के standard format string का समर्थन करता है। या उपयोग करें:

string txt= "2009-10-08 08:22:02Z"; 
DateTime output = DateTime.ParseExact(txt, new string[] {"s", "u"}, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); 

दोनों प्रारूपों का समर्थन करने के लिए।

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