Wenn Sie ein DateTime mit eingebetteten .net JavaScriptSerializer serialisieren und deserialisieren, erhalten Sie zwei verschiedene Daten, wenn Sie in UTC + etwas sind!.net DateTime Serialization Deserialization Fehler
Beispiel (angenommen, Sie in UTC + 2 sind wie ich jetzt bin)
JavaScriptSerializer myJson = new JavaScriptSerializer();
DateTime myDate = DateTime.Now; //suppose 2016-03-29 16:12:00
strSerialized = myJson.Serialize(myDate);
//DO WHAT YOU NEED WITH IT...
DateTime myDateDes = myJson.Deserialize<DateTime>(strSerialized);
Label1.Text=myDateDes.ToString();//it gives you 2016-03-29 14:12:00 ! WRONG! IT's in UTC+0 ! Has 2 HOURS less !!!
Also, wenn Sie das deserialisiert Datum zu bekommen, wird es Ihnen die UTC + 0 Wert standardmäßig geben ...! !
Dies unterscheidet sich von JavaScriptSerializer UTC DateTime issues, da dieser Artikel den Unterschied in der Deserialisierung verschiedener Datetime-Datentypen beschreibt und eine Lösung (.UtcDateTime) bereitstellt, die das Problem nicht behebt. Bei der Deserialisierung mit .utcDateTime gibt eine serialisierte DateTime immer das falsche UTC + 0 Datum ...
ich gues s Sie möchten stattdessen ein DateTimeOffset-Objekt serialisieren/deserialisieren. –
In meinem Fall brauchte ich die DateTime ... die DateTimeOffset gibt mir den UTC Offset wie 29/03/2016 17:00:23 +02: 00 aber es konvertiert immer nach der Deserialisierung in die UTC + 0 (29/03/2016 15:00:23 +00: 00). Dies ist nützlich, um zu verstehen, was dahinter passiert, aber in meinem Fall brauchte ich einfach ... genau das zu deserialisieren, was ich serialisiert habe, keine geänderte Version davon ... – BitQuestions
Ich glaube, das ist in der Tat ein bekannter Bug im .net Serialisierer. – Jeff