2011-02-24 12 views
7

C# noob ürününü kullanarak AM/PM'yi eşleştiremiyor gibi görünüyor. Basit soru, ama her şeye çevrimiçi baktığımda, bu doğruyu yapıyor gibi görünüyor.DateTime.TryParseExact, "tt"

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.} 

Ama sadece beklenen işleri olarak dize tarih ve biçiminden "tt" dan AM/PM kaldırarak: Bu kod işe yaramaz Ama neden kimse bana söyleyebilir? onun kesin Adı rağmen

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

görünüyor AM/PM notasyonu kullanılan bir kültürü, böyle en-US olarak belirtmeyi deneyin Benim için iyi çalışmak ... – SwDevMan81

+0

TryParseExact() öğesinin dönüş değerine dikkat etmelisiniz. Burada yanlış var. Bunun yerine ParseExact kullanın, şimdi güzel bir istisna olsun. –

cevap

7

, DateTime.TryParseExact() tarihleri ​​ayrıştırmak için sistem kültürü bağlıdır.

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

Ah, çok teşekkürler! – Aaryn

3

Aslında örneğin bir Brittish CultureInfo AM/PMdesignators kullanan bir kültür belirtmek zorunda:

DateTime.TryParseExact(testDateString, testFormat, CultureInfo.GetCultureInfo("en-GB"), 0, out testDate); 
İlgili konular