2010-04-01 17 views
37

'un bir tarih olduğu ve 194007 bir zamanın olduğu bir sonraki biçim olan "ORDER20100322194007" bir dizilim var. Bir dize ayrıştırmak ve içerdiği DateTime nesnesini almak nasıl?Özel bir biçimde tarih ve saat içeren bir dizeyi ayrıştırma

+1

Bu iyi bir soru. Belki de başlığı ".NET'te özel tarih biçimi DateTime ayrıştırma" gibi bir şeyle değiştirmelisiniz. –

+0

Tamam, size katılıyorum. – akrisanov

cevap

76

Her zaman ORDER ile mi başlayacak?

string pattern = "'ORDER'yyyyMMddHHmmss"; 
DateTime dt; 
if (DateTime.TryParseExact(text, pattern, CultureInfo.InvariantCulture, 
          DateTimeStyles.None, 
          out dt)) 
{ 
    // dt is the parsed value 
} 
else 
{ 
    // Invalid string 
} 

her zaman o zaman sadece almak için gereken her şeyi "SİPARİŞ" ile başlamıyorsa dize bir istisna olmalıdır geçersiz olma, daha sonra yerine DateTime.TryParseExact

ait DateTime.ParseExact kullanırsanız

tarih ve saat bölümü ve yukarıdaki biçim deseninden "SİPARİŞ" öğesini kaldırın.

8

Ayrıştırma sırasında kullanılması gereken biçimi belirtmek için DateTime.ParseExact yöntemini kullanabilirsiniz.

1

Dizenizin sabit bir yapısı yoksa, sipariş her zaman orada olmayacaksa, sayıları ve karakterleri ayırmak için regex'i kullanabilir ve ardından ayrılmış numaralar için datetime işlevine dönüştür'ü kullanabilirsiniz.

İlgili konular