2008-10-31 38 views

Respuesta

119

Siempre uso el formato ISO 8601 (por ejemplo, 2008-10-31T15:07:38.6875000-05:00) - date.ToString("o"). Es el XSD date format también. Ese es el formato preferido y un Standard Date and Time Format string, aunque se puede utilizar una cadena de formato manual si es necesario si no desea que la 'T' entre la fecha y la hora: date.ToString("yyyy-MM-dd HH:mm:ss");

EDIT: Si está utilizando una clase generada a partir 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.

3

¿Qué dice la DTD?

Si el archivo XML es para comunicarse con otro software existente (por ejemplo, SOAP), luego verifique que el software tenga 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.

38

EDITAR: Este es un mal consejo. Use "o", como se indica arriba. "s" hace la cosa incorrecta .

Siempre lo uso:

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

Esto es correcto si el esquema es el siguiente:

<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

+8

Tenga en cuenta que esto convierte la fecha en UTC. Cuando procesa la fecha, debe convertirla de nuevo a su zona horaria actual en función de la configuración regional (a menos que esté procesando todo en UTC). Además, generalmente pondría una 'Z' al final para indicar que la fecha es UTC. – Ryan

+0

"s" funciona para mí cuando llamo a un servicio web .net desde soap ui. –

4

Si está ensamblando manualmente la cadena XML, use var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ")); que 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.

+0

jonnii's devolverá básicamente el mismo resultado. – chilltemp

+3

En este caso, todas las fechas DEBEN estar en la zona horaria UTC; de lo contrario, el uso del sufijo "Z" es incorrecto. – Fr0sT

+0

Voy a repetir el comentario anterior; esto es realmente incorrecto si el dt no es utc. –

Cuestiones relacionadas