मैं एक स्ट्रिंग इस तरह मिलीसेकेंड युक्त पार्स करने के लिए कोशिश कर रहा हूँ:मिलीसेकंड युक्त डेटटाइम को पार्स करना कुछ संस्कृतियों के लिए विफल रहता है। क्यूं कर?
string s = "11.05.2010 15:03:08.7718687"; // culture: de-CH DateTime d = DateTime.Parse(s); // works
हालांकि, de-डे वातावरण के तहत उदाहरण के लिए, दशमलव विभाजक एक अल्पविराम (नहीं एक डॉट) है। इसलिए उदाहरण बन जाता है:
string s = "11.05.2010 15:03:08,7718687"; // culture: de-DE (note the comma) DateTime d = DateTime.Parse(s); // throws a FormatException
यह मेरे लिए अजीब है कि DateTime.Parse (रों) अब एक FormatException फेंक के रूप में यह CultureInfo.CurrentCulture उपयोग करने के लिए पार्स करने के लिए माना जाता है चाहिए। यहां तक कि वर्तमान संस्कृति को एक तर्क के रूप में पारित करने से स्पष्ट रूप से न तो मदद मिलती है। क्या किसी के पास कोई विचार है कि यह क्यों काम नहीं करता है? क्या पार्सिंग नंबरफॉर्मैटइन्फो नम्बरडिसिल सैपरेटर को खाते में नहीं लेती है?
उप-दूसरे समय स्वरूपण मानकीकृत करने के कुछ दिन पहले (आईएसओ 8601: 2004 ने इसे किया), तो इससे कोई फर्क नहीं पड़ता कि विभाजक क्या था। इसलिए, मानक आमतौर पर कवर नहीं करते हैं जो उप-दूसरे समय के लिए दशमलव बिंदु के रूप में उपयोग किया जाना चाहिए। यह स्पष्ट नहीं है कि संख्यात्मक प्रारूप जानकारी सही है, लेकिन एक बेहतर विकल्प नहीं है। हम हाल ही में इस मुद्दे के साथ कुश्ती कर रहे हैं (एक पूरी तरह से अलग संदर्भ में - विंडोज प्लेटफॉर्म नहीं), और इसके लिए अभी तक एक अच्छी प्रणाली के साथ नहीं आया है। इसके अलावा पीछे की ओर (अनुकूल) संगतता हमें कुछ सिरदर्द दे रही है। –