2010-05-05 17 views
5

Sto utilizzando un WSDL che prevede un parametro DateTime per uno dei metodi. Quando .NET serializza mia chiamata, si crea un parametro data così:Come cambio il formato data di una richiesta SOAP .net?

2010-1-1T10: 00: 00.00

Questo appare come il serializzatore sta usando un formato di data di "s". Ho bisogno di un formato diverso, vale a dire quello con il fuso orario offset:

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

Come faccio a specificare il formato della data che voglio il serializzatore da usare? (C# o VB.NET)

+1

non è così che SoapFormatter serializza DateTime, sembra che questo: "2010-05-05T16: 57: 27,5270036-05: 00". Si noti la frazione dei secondi e le 2 cifre del mese e del giorno. Non ho idea di come avresti ottenuto il tuo. –

+0

Hai ragione. Ho digitato l'esempio in modo errato. Gli zeri iniziali sono necessari e lo spazio prima di -04: 00 deve essere rimosso. –

+0

Grazie Hans, questo ha funzionato perfettamente per me, MA cosa significa queste ultime cifre ".5270036-05: 00" – mukamaivan

risposta

2

Se l'offset del fuso orario è per il fuso orario corrente, è necessario verificare che l'istanza DateTime abbia la proprietà Kind impostata su DateTimeKind.Local. In caso contrario, è possibile imporre come segue:

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

Grazie - ha funzionato perfettamente. –

0

Di solito questo sarebbe stato fatto passando ora/data in formato UTC (Universal Time Coordinated) ... che significa: Orari nel mondo e mettendo il fuso orario (se necessario) in un parametro separato.

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

+0

Questa è una buona idea, ma la mia domanda è: come posso ottenere che il serializzatore per le chiamate SOAP utilizzi un formato diverso dal suo formato predefinito? (In ogni caso, il servizio che sto chiamando non accetta quel formato - l'ho provato usando SoapUI) –

Problemi correlati