Pourquoi ne Json.NET DeserializeObject changer le fuseau horaire à l'heure locale?

Je suis en utilisant json.net pour désérialiser un DateTimeOffset, mais c'est ignorer le fuseau horaire spécifié et la conversion de l'datetime pour le décalage. Par exemple, étant donné

var content = @"{""startDateTime"":""2012-07-19T14:30:00+09:30""}";

Quand deserialised à l'aide de:

var jsonSerializerSettings = new JsonSerializerSettings() { DateFormatHandling = DateFormatHandling.IsoDateFormat, DateParseHandling = DateParseHandling.DateTimeOffset, DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind };
var obj = JsonConvert.DeserializeObject(content, jsonSerializerSettings);

L'obj contient une propriété contenant une DateTimeOffset mais la valeur sera 2012-07-19T15:30:00+10:30 c'est à dire converti le fuseau horaire local au lieu de conserver l'original de fuseau horaire.

Est-il un moyen d'obtenir la valeur analysée comme prévu, de sorte que la DateTimeOffset propriété correspondra à la valeur fournie?

  • La chose drôle est que la date/l'heure est correcte, 14:30 +9:30 doit être de 15:30 +10:30.
  • Vous ne savez pas si il n'y a aucun rapport ici, mais il semble WCF la sérialisation/désérialisation ne ce truc par défaut ainsi. Peut-être la même solution pourrait vous aider: daveonsoftware.blogspot.com/2008/07/...
InformationsquelleAutor Dave Capper | 2012-07-19