2010-02-10 25 views

cevap

26

Sen emin değiliz veri için DateTime.ParseExact veya DateTime.TryParseExact kullanabilirsiniz Örneğin:

using System; 

class Test 
{ 
    static void Main() 
    { 
     string formatString = "yyyy'##'MM'##'dd' 'HH'*'mm'*'ss"; 
     string sampleData = "2010##02##10 07*22*15"; 
     Console.WriteLine(DateTime.ParseExact(sampleData, 
               formatString, 
               null)); 
    } 
} 

biçim dizesinde tırnak mutlaka bulunması - bu işe yarar. çok: - böylece "#" değişirse için "/"

string formatString = "yyyy##MM##dd HH*mm*ss"; 

Ancak tırnak kullanarak tırnak arasındaki karakterler anlamıyla kullanılır ve desen karakter olarak anlaşılamamıştır edilecek olduklarını açık olmak demektir alıntılar kullanan sürüm kesinlikle "/" yi kullanır. rsion, kültüre özgü bir değer kullanmaz. ParseExact için

çağrısında null "Mevcut kültürünü kullanmak" anlamına - çok fark yaratmak için düşüktür, bu durumda ancak yaygın kullanışlı bir alternatif CultureInfo.InvariantCulture olduğunu.

Biçim dizisini ayrıştırmak ve bilgileri korumak için BCL'yi almanın bir yolu olmadığı talihsiz bir durumdur; Benim kendi Noda Time projem bu durumu düzeltir ve ben çok daha hızlı ayrıştırma ve biçimlendirme yapacak umuyoruz - ama şu anda üretim hazır olmaktan çok uzak.

+2

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx – Tanzelax

7

DateTime.ParseExact yöntemini kullanabilir ve ihtiyacınız olan formatı geçebilirsiniz.

+0

Bu, "string" öğesini "DateTime" olarak ayrıştırmanın en etkili yoludur. biçim bilgisi olmadan '.Parse()' ve '.TryParse() ile ayrıştırma f..king kahrolası yavaş! Kendi biçimlendirme biçiminizi sağlıyorsanız, ilgili ayrıştırma için –