Convertire una stringa in una data in .net


8

Sto leggendo il testo da un file flat in C# e ho bisogno di verificare se certi valori sono date. Potrebbero essere nel formato AAAAMMGG o nel formato MM/GG/AA. Qual è il modo più semplice per farlo in .Net?

26
string[] formats = {"yyyyMMdd", "MM/dd/yy"}; 
var Result = DateTime.ParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None); 

o

DateTime result; 
string[] formats = {"yyyyMMdd", "MM/dd/yy"}; 
DateTime.TryParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None, out result); 

Maggiori informazioni nella documentazione MSDN su ParseExact e TryParseExact.

  0

Questo è meglio del mio. Non sapevo che si poteva fare un array di stringhe per i formati. Molto bella! 23 set. 082008-09-23 19:42:00

  0

Ancora meglio! Proprio quello di cui avevo bisogno. 23 set. 082008-09-23 19:57:04

  0

Assicurati di controllare il valore di ritorno di DateTime.TryParseExact (...) in quanto sarà l'unico modo per sapere se ci è riuscito o meno. 24 set. 082008-09-24 00:11:22


3

DateTime.TryParse metodo

  0

Poiché non riesco a modificare la risposta, ho pensato che potrebbe essere utile fornire un collegamento all'articolo MSDN per tale metodo. http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx 23 set. 082008-09-23 19:39:50

  0

[@Yadyn]: ho pensato che l'intellisense sarebbe stato sufficiente, ma ok ho aggiunto il link per essere completo - grazie! 25 set. 082008-09-25 18:38:24


0

Si può anche fare Convert.ToDateTime

non è sicuro i vantaggi di entrambi i


0

Utilizzando TryParse non sarà un'eccezione se fallisce. Inoltre, TryParse restituirà True/False, indicando il successo della conversione.

Saluti ...


3

si potrebbe provare anche TryParseExact per impostare il formato esatto. Metodo , ecco la documentazione: http://msdn.microsoft.com/en-us/library/ms131044.aspx

, ad es.

DateTime outDt; 
bool blnYYYMMDD = 
    DateTime.TryParseExact(yourString,"yyyyMMdd" 
          ,CultureInfo.CurrentCulture,DateTimeStyles.None 
          , out outDt); 

Spero di aiutarti.

  0

Amico! È molto utile, ho perso quasi un'ora per questo, anche se so che l'ho già fatto da qualche parte. 31 mar. 092009-03-31 08:46:31


0

È possibile utilizzare il metodo TryParse per controllare la validità e analizzare allo stesso tempo.

DateTime output; 
string input = "09/23/2008"; 
if (DateTime.TryParseExact(input,"MM/dd/yy", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output) || DateTime.TryParseExact(input,"yyyyMMdd", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output)) 
{ 
    //handle valid date 
} 
else 
{ 
    //handle invalid date 
}