2011-03-11 1 views
1

J'ai une chaîne XML avec la date suivante: 2001-01-01T03: 40: 00ZComment obtenir la désérialisation XML .Net pour préserver DateTimeKind?

Notez comment il se termine par Z, pour indiquer UTC.

Je deserialize comme ceci:

using (StringReader stringReader = new StringReader(xmlString)) 
    using (XmlReader xmlReader = XmlReader.Create(stringReader)) 
     obj = (MyObject)sr.ReadObject(xmlReader); 

Mais quand je vais aux champs DateTime correspondants dans l'objet résultant, le champ Type est réglé sur « Non spécifié » plutôt que « Utc » qui est ce qu'elle devrait être . Comment puis-je contourner ce bug?

Répondre

2

Le champ Kind ne possède pas de setter et le XmlSerializer ne pourra pas le définir.

Plusieurs recommandent toujours de sérialiser l'heure en UTC et d'appeler ToLocalTime si vous en avez besoin.

Voir this.

+0

Voici comment nous le faisons, et cela fonctionne plutôt bien. Les données elles-mêmes restent toujours génériques et toutes les vues peuvent refléter le fuseau horaire dans lequel le système est défini. – drharris