2010-05-05 9 views
5

Estoy usando un WSDL que espera un parámetro DateTime para uno de los métodos. Cuando .NET serializa mi llamada, se crea un parámetro de fecha como esta:¿Cómo cambio el formato de fecha de una solicitud .net SOAP?

2010-1-1T10: 00: 00.00

Esto parece el serializador está utilizando un formato de fecha de "s". Necesito un formato diferente, a saber uno con la zona horaria offset:

2010-1-1T10: 00: 00.00 -4: 00

¿Cómo se especifica el formato de fecha Quiero que el serializador de usar? (C# o VB.NET)

+1

Así no es como SoapFormatter serializa DateTime, que se ve así: "2010-05-05T16: 57: 27,5270036-05: 00". Tenga en cuenta la fracción de segundos y los 2 dígitos del mes y el día. No tengo idea de cómo conseguirías la tuya. –

+0

Tienes razón. Escribí el ejemplo incorrectamente. Los ceros iniciales son necesarios, y el espacio anterior a -04: 00 debe eliminarse. –

+0

Gracias Hans, esto funcionó a la perfección, PERO ¿qué significan estos últimos dígitos? .5270036-05: 00 " – mukamaivan

Respuesta

2

Si el desplazamiento de la zona horaria es para su zona horaria actual, debe verificar que su instancia de DateTime tenga su propiedad Kind establecida en DateTimeKind.Local. Si no es así, puede forzar la siguiente manera:

DateTime myDateTime; 
... 
myDateTime = myDateTime.SpecifyKind(myDateTime, DateTimeKind.Local); 
+0

Gracias - esto funcionó a la perfección. –

0

Por lo general, esto se haría pasar por hora/fecha en el formato UTC (Tiempo Universal Coordinado) ... que significa: Hora mundial y poner la zona horaria (si es necesario) en un parámetro separado.

Ver: http://msdn.microsoft.com/en-us/library/system.datetime.touniversaltime%28VS.71%29.aspx

+0

Esa es una buena idea, pero mi pregunta es ¿CÓMO obtengo que el serializador para llamadas SOAP use algún formato en lugar de su formato predeterminado? (En cualquier caso, el servicio que estoy llamando no acepta ese formato, lo intenté con SoapUI) –

Cuestiones relacionadas