2012-02-05 15 views
5

Sé que esta pregunta se ha realizado de diferentes maneras, y las he examinado todas, y ninguna de las soluciones parece funcionar para yo. Por lo tanto, espero que tal vez ustedes puedan darme una mano rápida.Conversión de formato de cadena "aaaa-MM-ddTHH: mm: ss.fffZ" a DateTime

La cadena de entrada es: "2000-01-01T12: 00: 000Z". Necesito tomar esa cadena de entrada y convertirla a DateTime para que pueda ser almacenada en la base de datos.

He estado usando ParseExact, pero sigo obteniendo la excepción de cadena de fecha no reconocida. ¿Dónde estoy equivocado?

inValue.LatestDepartTime = "2000-01-01T12:00:000Z"; 
DateTime _latestDepartTime = DateTime.ParseExact(inValue.LatestDepartTime, "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture); 

Respuesta

5

Su cadena de formato necesita exacta ly coincide con la entrada.

Eso incluye los caracteres literales T y Z.

+0

Por lo tanto, debería ser capaz de analizar la configuración del T y Z de la secuencia original que debería darme: 2020-01-01 12: 00: 000. Entonces las dos cadenas coincidirán exactamente. Pero, lo he intentado y sigo teniendo el mismo error. Una cosa a tener en cuenta, y tal vez esto ayude, en la depuración me di cuenta de que el _latestDepartTime está configurado a 1/1/0001 12: 12: 000 AM cada vez que lo intenté. – CalvinBlount

+0

No; necesita incluir 'T' y' Z' en la cadena de formato. Es posible que deba envolverlos en comillas simples; No recuerdo. – SLaks

+0

Acaba de ver el valor predeterminado (vacío) de un 'DateTime'. – SLaks

3

No especifica el T en el patrón.

Dicho esto, es posible que desee echar un vistazo a la clase XmlConvert, que proporciona los métodos para convertir este formato.

4

Necesita incluir \\T y \\Z en su cadena de formato para que coincida con los literales T y Z.

1

Es necesario poner comillas simples alrededor de la T y Z:

DateTime parsedDateTime; 
DateTime.TryParseExact(obj, "yyyy-MM-dd'T'HH:mm:ss'Z'", null, System.Globalization.DateTimeStyles.None, out parsedDateTime); 
return parsedDateTime; 
2

Uso yyyy-MM-dd'T'HH:mm:ss.fff'Z'

El código es:

public DateTime convertIsoToDateTime (string iso) 
{ 
    return DateTime.ParseExact(iso, "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", CultureInfo.InvariantCulture); 
} 
Cuestiones relacionadas