【发布时间】:2010-11-29 14:05:10
【问题描述】:
在将 JSON 日期反序列化为 C# DateTime 时,我们遇到了一个令人讨厌的问题。
代码是:
JavaScriptSerializer serializer = new JavaScriptSerializer();
jsonTrechos = jsonTrechos.Replace("/Date(", "\\/Date(").Replace(")/", ")\\/");
Trecho[] model = serializer.Deserialize<Trecho[]>(jsonTrechos);
jsonTrechos是json2.js的JSON.stringify();的字符串。
问题是:反序列化工作,bur所有的Trechos对象的日期都加了2个小时。
我的时区是巴西 (UTC -3),我们正处于夏令时(所以我们目前处于 UTC -2),如果有任何事情要做的话。我想也许本地化和时区可能在这方面发挥了作用,如果确实如此,我不知道如何解决它。
【问题讨论】:
-
顺便说一句,这些替换在那里,因此序列化程序可以识别“\/Date(number)\/”格式。
-
我建议在内部使用 UTC 日期,除非有令人信服的理由不这样做。在您需要非 UTC 日期的情况下,简单的本地日期也不能很好地工作,但您通常需要更复杂的时间来处理时区。
标签: c# json javascriptserializer