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/...
Vous devez vous connecter pour publier un commentaire.
Il semble ignorer
DateParseHandling.DateTimeOffset
et est à l'aide deDateParseHandling.DateTime
. Je voudrais connecter un problème ici: https://github.com/JamesNK/Newtonsoft.JsonSi vous êtes en utilisant .NET WebApi vous pouvez ajouter le texte suivant à la
WebApiConfig.cs
fichier pour gérer cela à l'échelle mondiale dans votre application.Cela permettra de dire précisément le
JsonFormatter
d'inclure et de comprendre les informations de fuseau horaire lors de la sérialisation et la désérialisation d'une date.Essayez d'utiliser ceci:
Je ne sais pas si cela fonctionnera dans tous les cas, mais pour moi il l'a fait. Vous pouvez essayer d'autres valeurs pour
DateTimeZoneHandling
ou de recherche pour plus d'options sur Google.Je ne suis pas sûr au sujet de la version avez-vous utilisé, parce qu'à un certain point dans le temps, nous avons eu le même problème, puis mettre à jour fixe, il...
Votre code fonctionne mal pour moi aussi, mais si je créer une classe comme
et appel
tout fonctionne comme prévu. Oui, c'est un bogue pour sûr, oui, je ne sais pas comment pour obtenir le résultat exactement comme VOUS le voulez, mais probablement, il aura de l'aide pour quelqu'un d'autre.
Cela fonctionne pour moi, un fuseau horaire est conservé
Un JSON corps est quelque chose comme cela
À l'utilisation de ces paramètres dans sérialiseur, type: