2012-07-03 10 views
8

Sto usando il metodo Datetime.TryParse per controllare il datetime valido. la stringa di data di input sarebbe qualsiasi dato di stringa. ma restituisce false come la data specificata non valida.controllo data valida con metodo DateTime.TryParse

DateTime fromDateValue; 
if (DateTime.TryParse("15/07/2012", out fromDateValue)) 
{ 
    //do for valid date 
} 
else 
{ 
    //do for in-valid date 
} 

Edit: ho perso. ho bisogno di controllare la data valida con il tempo come "15/07/2012 12:00:00".

Eventuali suggerimenti sono i benvenuti ....

+4

Questa è sempre una cosa pericolosa ... parsing dipende dalla cultura degli utenti. Cerca sempre di tenerlo a mente? "15/07/2012" è valido in Francia mentre non è negli Stati Uniti ... – Kek

+1

se si utilizza un locale che prevede un formato MM/GG/AAAA, quindi 15/07/2012 è una data non valida. – Jason

+1

@Jason hai ragione, la mia localizzazione è MM/gg/aaaa formata. e così, non è valido. – Sujit

risposta

21

è possibile utilizzare il metodo TryParseExact che permette di passare una raccolta di possibili formati che si desidera supportare. Il metodo TryParse dipende dalla cultura, quindi stai molto attento se decidi di usarlo.

Così, per esempio:

DateTime fromDateValue; 
string s = "15/07/2012"; 
var formats = new[] { "dd/MM/yyyy", "yyyy-MM-dd" }; 
if (DateTime.TryParseExact(s, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out fromDateValue)) 
{ 
    // do for valid date 
} 
else 
{ 
    // do for invalid date 
} 
0

Si deve usare TryParseExact come ti sembra di avere il formato fisso nel tuo caso.

Qualcosa di simile può anche funzionare per voi

DateTime.ParseExact([yourdatehere], 
        new[] { "dd/MM/yyyy", "dd/M/yyyy" }, 
        CultureInfo.InvariantCulture, 
        DateTimeStyles.None); 
0

Come gli altri hanno detto, è possibile utilizzare TryParseExact.

Per maggiori informazioni e l'utilizzo con il tempo, è possibile controllare il MSDN Documentation

Problemi correlati