2011-02-24 12 views
7

सी # नोब का उपयोग कर एएम/पीएम से मेल नहीं खा सकता है। सरल सवाल, लेकिन ऑनलाइन सबकुछ देखकर, मुझे यह सही लगता है। लेकिन किसी को भी मुझे बताओ क्यों इस कोड को काम नहीं करेंगे कर सकते हैं:डेटटाइम। ट्राईपर्सएक्सएक्ट "टीटी"

string testDateString = "2/02/2011 3:04:01 PM"; 
string testFormat = "d/MM/yyyy h:mm:ss tt"; 
DateTime testDate = new DateTime(); 
DateTime.TryParseExact(testDateString, testFormat, null, 0, out testDate); 

// Value of testDate is the default {1/01/0001 12:00:00 a.m.} 

लेकिन बस की उम्मीद काम करता है के रूप में स्ट्रिंग की तारीख और प्रारूप से "टीटी" से AM/PM को हटाने?

string testDateString = "2/02/2011 3:04:01"; 
string testFormat = "d/MM/yyyy h:mm:ss"; 
DateTime testDate = new DateTime(); 
DateTime.TryParseExact(testDateString, testFormat, null, 0, out testDate); 

// Value of testDate is the expected {2/02/2011 3:04:01 a.m.} 
+3

लगता है जैसे en-US एक संस्कृति जहां AM/PM संकेतन प्रयोग किया जाता है, निर्दिष्ट करने का प्रयास मेरे लिए ठीक काम करने के लिए ... – SwDevMan81

+0

आपको TryParseExact() के वापसी मूल्य पर ध्यान देना होगा। आप यहाँ झूठ बोल गए हैं। इसके बजाय ParseExact का उपयोग करें, अब आपको एक अच्छा अपवाद मिलता है। –

उत्तर

7

अपने सटीक नाम के बावजूद, DateTime.TryParseExact() दिनांकों पार्स करने के लिए प्रणाली संस्कृति पर निर्भर करता है।

DateTime.TryParseExact(testDateString, testFormat, new System.Globalization.CultureInfo("en-US"), DateTimeStyles.None, out testDate); 
+0

आह, बहुत बहुत धन्यवाद! – Aaryn

3

आप एक संस्कृति है कि वास्तव में उदाहरण के लिए, AM/PMdesignators का उपयोग करता है एक Brittish CultureInfo में बताने की:

DateTime.TryParseExact(testDateString, testFormat, CultureInfo.GetCultureInfo("en-GB"), 0, out testDate); 
संबंधित मुद्दे