Respuestas:
Yo siempre uso el formato ISO 8601 (p . 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 desde un XSD o un servicio web, puede simplemente asignar la instancia de DateTime directamente a la propiedad de la clase. Si está escribiendo texto XML, utilice lo anterior.
EDITAR: Este es un mal consejo. Utilice "o", como se indicó anteriormente. "s" hace lo incorrecto .
Yo siempre uso esto:
dateTime.ToUniversalTime().ToString("s");
Esto es correcto si su esquema se ve así:
<xs:element name="startdate" type="xs:dateTime"/>
Lo que resultaría en:
<startdate>2002-05-30T09:00:00</startdate>
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 XML. Pero no tiene que preocuparse por el formato si utiliza los métodos de serialización integrados.
¿Qué tiene que decir la DTD?
Si el archivo XML es para comunicarse con otro software existente (por ejemplo, SOAP), verifique que el software sea lo que espera.
Si el archivo XML es para serialización o comunicación con software no existente (por ejemplo, el que está escribiendo), puede definirlo. En cuyo caso, sugeriría algo que sea fácil de analizar en el idioma que elijas 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 las fechas ISO (YYYY-MM-DD) fácilmente, ese es el que sugiero.
La XmlConvert
clase proporciona este tipo de instalaciones. Sobre DateTimes, en particular, tenga cuidado con los métodos obsoletos. Véase también: https://stackoverflow.com/a/7457718/1288109