Warum ändert JSON.NET DeserializeObject die Zeitzone auf lokale Zeit?
Ich bin mit json.net Deserialisieren eines DateTimeOffset
aber es ist die Nichtbeachtung der angegebenen Zeitzone und Konvertierung des datetime-der lokale offset. Zum Beispiel, gegeben
var content = @"{""startDateTime"":""2012-07-19T14:30:00+09:30""}";
Wenn deserialised mit:
var jsonSerializerSettings = new JsonSerializerSettings() { DateFormatHandling = DateFormatHandling.IsoDateFormat, DateParseHandling = DateParseHandling.DateTimeOffset, DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind };
var obj = JsonConvert.DeserializeObject(content, jsonSerializerSettings);
Obj enthält eine Eigenschaft, die eine DateTimeOffset
aber der Wert wird 2012-07-19T15:30:00+10:30
d.h. Umgerechnet in die lokale Zeitzone statt, unter Beibehaltung der ursprünglichen Zeitzone.
Gibt es einen Weg, um den Wert analysiert werden, wie erwartet, so dass die resultierende DateTimeOffset
Eigenschaft wird mit dem mitgelieferten Wert?
InformationsquelleAutor der Frage Dave Capper | 2012-07-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es zu ignorieren
DateParseHandling.DateTimeOffset
und ist mitDateParseHandling.DateTime
. Ich würde log ein Problem hier: https://github.com/JamesNK/Newtonsoft.JsonInformationsquelleAutor der Antwort Peter Ritchie
Wenn Sie .NET WebApi können Sie fügen Sie den folgenden, um die
WebApiConfig.cs
- Datei, um diese zu bewältigen, weltweit in Ihrer Anwendung.Dieser wird sagen, speziell die
JsonFormatter
zu zählen und zu verstehen, die local time zone-Informationen beim serialisieren und Deserialisieren von einem Datum.InformationsquelleAutor der Antwort txavier
Ich bin mir nicht sicher, in Bezug auf welche version hast du, weil an einem gewissen Punkt der Zeit, wir hatten das gleiche problem, dann update es behoben...
Ihren code falsch funktioniert bei mir auch, aber wenn ich die Klasse erstellen wie
- und call -
funktioniert alles wie erwartet. Ja, es ist bug, das ist sicher, ja, ich weiß nicht, wie man das Ergebnis genau so, wie SIE wollen, aber wahrscheinlich, wird es helfen, für jemand anderes.
InformationsquelleAutor der Antwort chopikadze
Versuchen Sie es mit dieser:
Ich weiß nicht, ob es funktioniert in allen Fällen, aber für mich Tat es das. Sie können versuchen, einige andere Werte, die für
DateTimeZoneHandling
oder suchen Sie nach weiteren Optionen auf Google.InformationsquelleAutor der Antwort Grey Wolf
Dies funktioniert für mich, eine Zeitzone wird beibehalten
JSON Körper ist so etwas wie das
InformationsquelleAutor der Antwort Alexander Milchakov