C#中反序列化一个JSON日期的问题-增加2小时在将JSON日期反序列化为C#DateTime时,我们遇到了这样一个讨厌的问题。代码是:JavaScriptSerializerserializer=newJavaScriptSerializer();jsonTrechos=jsonTrechos.Replace("/Date(","\/Date(").Replace(")/",")\/");Trecho[]model=serializer.Deserialize(jsonTrechos);jsonTrechos是json2.js的字符串JSON.stringify();.问题是:反序列化有效,将2小时添加到Trechos对象中的所有日期。我的时区是巴西(UTC-3),我们在夏令时(所以我们目前在UTC-2),如果有的话。我在想也许本地化和时区可能会在这方面发挥作用,如果是这样我不知道如何解决它。这记录在MSDN中:Dateobjects,在JSON中表示为“/date(numberofticks)/”。ticks是一个正或负的long值,表示自1970年1月1日午夜UTC以来经过的滴答数(以毫秒为单位)。尝试调用DateTime.ToLocalTime()并查看是否获得正确的日期。我强烈推荐使用Json.NET库。坦率地说,.NET框架中的JSON序列化程序(和多个序列化程序)在某些方面很古怪,尤其是在序列化日期方面。Json.NET是我见过的唯一一个能够一致地处理它们(和一般的JSON)并且与其他消费者没有问题的库。为JSON指定的日期是UTC,正如您提到的,您使用的是夏令时,所以+2小时是有意义的。理想情况下,您应该使用UTC日期时间,因为它消除了夏令时的麻烦(或者在这种情况下,它被添加到其中)并允许全球托管。“Javascript日期以毫秒为单位,从1970年1月1日00:00:00世界标准时间(UTC)开始,每天包含86,400,000毫秒”(取自W3schools)。所以你想把它转换成你当地的时区。以上就是C#学习教程:问题是在C#中反序列化JSON日期——加2小时分享所有内容,如果对大家有用还需要详细了解C#学习教程,希望大家点赞更多关注—TimeZoneInfo.ConvertTimeFromUtc(yourDateToConvert,TimeZoneInfo.Local)本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
