如果使用嵌入式.net JavaScriptSerializer序列化和反序列化DateTime,如果使用UTC +,則會得到兩個不同的日期!.net日期時間序列化反序列化錯誤
實例(假設你是在UTC + 2像我現在)
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 !!!
所以,當你得到的反序列化日期,它會默認給你UTC + 0值...! !
這與JavaScriptSerializer UTC DateTime issues不同,因爲那篇文章描述了不同日期時間數據類型的反序列化的不同,並提供了一個解決方案(.UtcDateTime),它不能解決問題。事實上,嘗試使用.utcDateTime反序列化一個序列化的DateTime總是會給出錯誤的UTC + 0日期...
我覺得您想要序列化/反序列化DateTimeOffset對象。 –
在我的情況下,我需要DateTime ... DateTimeOffset爲我提供了像29/03/2016 17:00:23 +02:00這樣的utc偏移量,但它在反序列化之後總是轉換爲utc + 0(29/03/2016 15:00:23 +00:00)。這對了解後面發生的事情很有用,但在我的情況下,我只需要...反序列化我序列化的序列,而不是更改的utc版本... – BitQuestions
我相信這實際上是.net中的一個已知錯誤串行器。 – Jeff