2011-04-28 13 views
7

Trato de analizar un sello de fecha y hora de un sistema externo de la siguiente manera:TryParse especial con formato de fecha

DateTime expiration; 
DateTime.TryParse("2011-04-28T14:00:00", out expiration); 

Por desgracia, no se reconoce. ¿Cómo puedo analizar esto con éxito?

sl3dg3

+0

Pruebe DateTime.TryParseExact() especificando el formato requerido –

Respuesta

11

especificar el formato exacto que desea en DateTime.TryParseExact:

DateTime expiration; 

string text = "2011-04-28T14:00:00"; 
bool success = DateTime.TryParseExact(text, 
             "yyyy-MM-ddTHH:mm:ss", 
             CultureInfo.InvariantCulture, 
             DateTimeStyles.None, 
             out expiration); 
+0

¡La solución más limpia de IMO, thx! – sl3dg3

+2

Solo uso 'TryParseExact'. Realmente no puedes confiar en 'TryParse' si la computadora puede estar activada (jadeando) con la configuración de los EE. UU. – configurator

+0

+1 Sé que es viejo pero útil, gracias. – twoleggedhorse

2

probar este

DateTime expiration; 
DateTime.TryParse("2011-04-28 14:00:00", out expiration); 

Sin el uso de "T".

+0

Cambiar el valor de entrada (que se suministra en otro lugar) no es una solución tan buena como cambiar la forma de analizar para que coincida con el formato esperado, IMO. –

1

Debe agregar "00000Z" a su argumento de cadena.

DateTime.TryParse("2011-04-28T14:00:0000000Z", out expiration); 
1

usuario DateTime.TryParseExact función de la siguiente manera:

DateTime dateValue; 

if (DateTime.TryParseExact(dateString, "yyyy-MM-ddTHH:mm:ss", 
           new CultureInfo("en-US"), 
           DateTimeStyles.None, 
           out dateValue)) 
{ 
    // Do Something .. 
} 

Lee sobre DateTime.