2009-09-02 8 views
2

Désolé si ce problème a été vaincu à mort, mais je n'arrive pas à trouver une bonne réponse à ma question.DateTime Xml Deserialization

J'ai écrit un client .NET 2.0 qui consomme un service Web. La méthode Web que j'appelle renvoie plusieurs valeurs DateTime au format UTC.

Il semble que les valeurs soient désérialisées en tant que DateTimeKind.Local. Je suppose que c'est le comportement par défaut pour le framework .NET SOAP. Cependant, j'ai besoin que les valeurs soient DateTimeKind.Unspecified.

Quelles sont mes options pour remplacer la désérialisation de ces valeurs DateTime?

+0

Lorsque la date est sérialisée, le type Date est-il égal à DateTimeKind.Unspecified ou DateTimeKind.Local? –

+0

Je ne sais pas. Je n'ai pas créé le service Web. J'ai besoin de changer la façon dont ils sont désérialisés. –

Répondre

1

C'est ce que j'ai trouvé sur MSDN:

Lorsque vous utilisez la version .NET Framework 1.0 et 1.1, NE PAS envoyer une valeur DateTime qui représente le temps UCT à travers System.Xml.Serialization. Cela passe à pour les valeurs Date, Heure et DateHeure. Pour les services Web et autres formes de sérialisation au format XML impliquant System.DateTime, assurez-vous toujours que la valeur de la valeur DateTime représente l'heure locale actuelle de la machine. Le sérialiseur décode correctement une valeur définie par le schéma XML DateTime que est codée en GMT (valeur de décalage = 0), mais le décode au point de vue de l'heure machine locale .

Je ne sais pas si cela est encore vrai pour .NET 2.0

This est le lien vers l'article.

1

Mise à jour:

Les valeurs DateTime sont pas en UTC étant envoyé comme je pensais. Ce sont des heures locales avec le décalage horaire.

Cependant, mon problème persiste: j'ai besoin que les valeurs DateTime soient désérialisées sans le décalage de fuseau horaire. Je veux les heures dans leur fuseau horaire local, pas converti dans mon fuseau horaire.

J'ai trouvé une solution de rechange, cependant. Il s'est avéré assez facile d'écrire un descendant de SoapExtension pour supprimer les informations de fuseau horaire de toutes les valeurs xs: dateTime.