如果使用嵌入式.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