¿Cuál es el formato correcto para usar en Date / Time en un archivo XML?

¿Qué formato uso para Fecha / Hora al escribir en un archivo XML usando .NET? ¿Simplemente uso DateTime.ToString() , o tengo que usar un formato específico?

Siempre uso el formato ISO 8601 (ej. 2008-10-31T15:07:38.6875000-05:00 ) – date.ToString("o") . También es el formato de fecha XSD . Ese es el formato preferido y una cadena de formato de fecha y hora estándar , aunque puede usar una cadena de formato manual si es necesario si no desea la ‘T’ entre la fecha y la hora: date.ToString("yyyy-MM-dd HH:mm:ss");

EDITAR: si está utilizando una clase generada de un XSD o servicio web, puede asignar la instancia de DateTime directamente a la propiedad de la clase. Si está escribiendo texto XML, use lo de arriba.

EDITAR: Este es un mal consejo. Use “o”, como se indica arriba. “s” hace lo incorrecto .

Yo siempre uso esto:

 dateTime.ToUniversalTime().ToString("s"); 

Esto es correcto si su esquema se ve así:

  

Lo que resultaría en:

 2002-05-30T09:00:00 

Puede obtener más información aquí: http://www.w3schools.com/xml/schema_dtypes_date.asp

Si está ensamblando manualmente la cadena XML use var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ")); Eso generará el formato oficial de fecha y hora de XML. Pero no tiene que preocuparse por el formato si usa los métodos integrados de serialización.

¿Qué dice la DTD?

Si el archivo XML es para comunicarse con otro software existente (por ejemplo, SOAP), entonces verifique ese software para lo que espera.

Si el archivo XML es para serialización o comunicación con un software no existente (por ejemplo, el que está escribiendo), puede definirlo. En ese caso, sugeriría algo que sea fácil de analizar en su (s) idioma (s) preferido (s) y fácil de leer para los humanos. por ejemplo, si su idioma (ya sea VB.NET o C # .NET o lo que sea) le permite analizar fechas ISO (AAAA-MM-DD) fácilmente, esa es la que yo sugeriría.

La clase XmlConvert proporciona este tipo de instalaciones. Sobre DateTimes, en particular, tenga cuidado con los métodos obsoletos. Ver también: https://stackoverflow.com/a/7457718/1288109