WCF REST JSON API: DataContractJsonSerializer中的日期时间序列化

本文关键字:日期 时间 时间序列 序列化 DataContractJsonSerializer REST JSON API WCF | 更新日期: 2023-09-27 17:50:28

有人知道为什么DataContractJsonSerializer序列化DateTime属性以包含时区吗?也就是说,我在一个对象上有一个。net DateTime,它被序列化为JSON。它被序列化为1303500600000+0000,而不是1303500600000。

这意味着当它在客户端应用程序中被DataContractJsonSerializer反序列化时,它将被转换为"本地"时间。实际上,datetime应该保持与时区无关。

WCF REST JSON API: DataContractJsonSerializer中的日期时间序列化

我遇到了同样的问题。我在PST上开发所有东西,然后把它们推到服务器EST上,这显然引起了一些有趣的问题。我从来没能找到一个好的解释,但这与日期时间类型有关。默认情况下,DateTime上的DateTimeKind为Unspecified,序列化器将其转换为"Local",从而添加时区偏移量。

我最终解决这个问题的方法是设置DateTime。Kind to UTC:

http://msdn.microsoft.com/en-us/library/shx7s921.aspx

下面是论坛对这个问题的另一个回答:

http://social.msdn.microsoft.com/forums/en us/csharpgeneral/thread/0a6c84a3 - 5348 - 4 - ea0 b33f eb411a2e1c97

如果DateTime。Kind是Utc,序列化器排除了TimeZone偏移量,你可以自己跟踪所有这些,并在服务器和客户端上对日期的TimeZone做出任何假设。

try this

yourDate.ToUniversalTime()

来源:here