Convierta una cadena en una fecha en .net


8

Estoy leyendo texto de un archivo plano en C# y necesito comprobar si ciertos valores son fechas. Podrían estar en formato AAAAMMDD o en formato MM/DD/AA. ¿Cuál es la forma más sencilla de hacer esto en .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); 

Más información en la documentación de MSDN en ParseExact y TryParseExact.

  0

Esto es mejor que el mío. No sabía que podría hacer una matriz de cadenas para formatos. ¡Muy agradable! 23 sep. 082008-09-23 19:42:00

  0

¡Mejor aún! Justo lo que necesitaba. 23 sep. 082008-09-23 19:57:04

  0

Asegúrate de verificar el valor de retorno de DateTime.TryParseExact (...) ya que esa será la única forma de saber si tuvo éxito o no. 24 sep. 082008-09-24 00:11:22


3

DateTime.TryParse método

  0

Como no puedo editar su respuesta, pensé que podría ser útil proporcionar un enlace al artículo de MSDN para ese método. http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx 23 sep. 082008-09-23 19:39:50

  0

[@Yadyn]: pensé que el intellisense sería suficiente, pero está bien, agregué el enlace para ser completo, ¡gracias! 25 sep. 082008-09-25 18:38:24


0

También se puede hacer Convert.ToDateTime

no está seguro de las ventajas de uno u otro


0

Usando TryParse no será una excepción si se produce un error. Además, TryParse devolverá True/False, lo que indica el éxito de la conversión.

Saludos ...


3

usted podría intentar también TryParseExact para establecer el formato exacto. método, aquí hay documentación: http://msdn.microsoft.com/en-us/library/ms131044.aspx

p.

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

Espero te ayude.

  0

¡Tío! Eso es muy útil, perdí casi una hora por esto, aunque sé que lo hice antes en alguna parte. 31 mar. 092009-03-31 08:46:31


0

Puede utilizar el método TryParse para verificar la validez y analizar al mismo tiempo.

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 
}