2010-05-05 6 views
5

J'utilise un WSDL qui attend un paramètre DateTime pour l'une des méthodes. Lorsque .NET sérialise mon appel, il crée un paramètre de date comme ceci:Comment modifier le format de date d'une demande SOAP .net?

2010-1-1T10: 00: 00.00

Cela ressemble sérialiseur utilise un format de date de "s". J'ai besoin d'un format différent, à savoir un avec le décalage horaire:

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

Comment puis-je spécifier le format de date que je veux que le sérialiseur à utiliser? (C# ou VB.NET)

+1

Ce n'est pas comment SoapFormatter sérialise DateTime, il ressemble à ceci: "2010-05-05T16: 57: 27,5270036-05: 00". Notez la fraction secondes et le mois et le jour à 2 chiffres. Aucune idée de comment vous obtiendriez le vôtre. –

+0

Vous avez raison. J'ai tapé l'exemple incorrectement. Les zéros en tête sont nécessaires, et l'espace avant -0: 00 devrait être supprimé. –

+0

Merci Hans, cela a fonctionné pour moi parfaitement, MAIS qu'est-ce que ces derniers chiffres représentent ".5270036-05: 00" – mukamaivan

Répondre

2

Si le décalage de fuseau horaire est pour votre fuseau horaire actuel, vous devez vérifier que la propriété Kind de votre instance DateTime est définie sur DateTimeKind.Local. Sinon, vous pouvez le forcer comme suit:

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

Merci - cela a fonctionné parfaitement. –

0

Habituellement, cela serait fait en passant heure/date dans le format UTC (Universal Time Coordinated) ... ce qui signifie: Worldtime et mettre le fuseau horaire (si nécessaire) dans un paramètre séparé.

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

+0

C'est une bonne idée, mais ma question est comment puis-je obtenir le sérialiseur pour les appels SOAP pour utiliser un format au lieu de son format par défaut? (Dans tous les cas, le service que j'appelle n'accepte pas ce format - je l'ai essayé avec SoapUI) –