2009-09-15 13 views
7

Estoy tratando de verificar que una cadena C# sea compatible con el formato XML TimeTime del esquema. Al mirar el MSDN, parece que las cadenas de formato estándar "o", "s" o "u" podrían describir fechas válidas, pero no puedo hacer que DateTime.ParseExact me funcione. ¿Qué estoy haciendo mal aquí?Uso de DateTime.TryParseExact para verificar el cumplimiento del esquema XML dateTime

string myDate = "1999-05-31T13:20:00.000-04:00"; 
DateTime.ParseExact(myDate, "o", CultureInfo.InvariantCulture, DateTimeStyles.None); 
DateTime.ParseExact(myDate, "s", CultureInfo.InvariantCulture, DateTimeStyles.None); 
DateTime.ParseExact(myDate, "u", CultureInfo.InvariantCulture, DateTimeStyles.None); 

Ninguno de los anteriores funciona. Lo siento si mi formato es malo: la primera vez que publico una pregunta aquí.

Respuesta

14

Puesto que usted quiere probar que los datos son compatibles con XML, se puede utilizar el método de XmlConvert.ToDateTime:

DateTime dt = XmlConvert.ToDateTime(myDate); 

Esto lanzará un FormatException si la cadena dada no tiene el formato correcto.

9

Sólo tiene que utilizar XmlConvert.ToDateTime (tenga en cuenta que XmlConvert.ToDateTime(string) se considera obsoleto en la actualidad y que puedes usar XmlConvert.ToDateTime(string, XmlDateTimeSerializationMode).

Sin embargo, si usted insiste en el uso de DateTime.ParseExact (y hay buenas razones para hacerlo, pero entonces debería usar DateTime.TryParseExact para evitar lanzar una excepción en casos de Despiste), puede utilizar la siguiente cadena de formato:

string format = "yyyy-MM-ddTHH:mm:ss.fffzzz"; 

los parentéticos en los párrafos anteriores puede ser engorroso para analizar (tengo la costumbre de hacer eso, lo siento)

.
Cuestiones relacionadas