2011-09-02 29 views
9

Bir dize verilir "15:30:20" ve "2011-09-02 15:30:20", Belirli bir dizenin tarih içerip içermediğini nasıl kontrol edebilirim?Bir dizenin tarih içerip içermediğini kontrol edin

"15:30:20" -> Not Valid 

"2011-09-02 15:30:20" => Valid 
+0

Olası yinelenen http://stackoverflow.com/questions/37732/what-is-the-regex-pattern-for -datetime-2008-09-01-123545 – Zenwalker

cevap

18

DateTime.TryParseExact Yöntemini kullanın. Dize tarih olup olmadığını

string []format = new string []{"yyyy-MM-dd HH:mm:ss"}; 
string value = "2011-09-02 15:30:20"; 
DateTime datetime; 

if (DateTime.TryParseExact(value, format, System.Globalization.CultureInfo.InvariantCulture,System.Globalization.DateTimeStyles.NoCurrentDateDefault , out datetime)) 
    Console.WriteLine("Valid : " + datetime); 
else 
    Console.WriteLine("Invalid"); 
12

Bir dize DateTime içine ayrıştırılamaz olup olmadığını kontrol etmek

bool b = DateTime.TryParseExact("15:30:20", "yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture,DateTimeStyles.AssumeLocal,out datetime); 

kullanabilirsiniz.

+0

Yukarıdaki çözümün kullanılması durumunda, 2 numunem her zaman doğru olarak gösterilecektir. Dize tarih içermiyor, sonra yanlış –

+0

gösterilip gösterilmediğini kontrol etmek istiyorum, şimdi deneyin – Dominik

+0

Bu tarihin DAİMA bu şekilde olacağını varsayalım. Acaba OP'nin – RichK

0

bu yöntemi kullanın kontrol etmek:

private bool CheckDate(String date) 
    { 
     try 
     { 
      DateTime dt = DateTime.Parse(date); 
      return true; 
     } 
     catch 
     { 
      return false; 
     } 
    } 
İlgili konular