2011-04-19 46 views
1

沒有人知道爲什麼DataContractJsonSerializer序列化DateTime屬性以包含時區?即,我正在將一個.NET DateTime序列化爲JSON的對象。它的序列化爲1303500600000 + 0000而不是1303500600000.WCF REST JSON API:DataContractJsonSerializer中的DateTime序列化

這意味着當它由DataContractJsonSerializer在客戶端應用程序內反序列化時,它將被轉換爲「本地」時間。實際上,日期時間應該保持時區不可知。

回答

1

我碰到了完全相同的問題。正在開發一切本地PST並推送到服務器EST,然後顯然引起一些有趣的問題。我從來沒有找到一個很好的解釋,爲什麼這是,但它與DateTime.Kind有關。默認情況下DateTimeKind在DateTime上是未指定的,Serializer轉換爲「Local」,從而添加時區偏移量。

我最終的解決辦法是由DateTime.Kind設置爲UTC工作方式:

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

這裏的另一個論壇上問題的答案:

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

如果DateTime.Kind是Utc,序列化程序排除了TimeZone偏移量,並且您可以自己跟蹤所有內容,並在服務器和客戶機上對您的dat的時區作出所需的任何假設ES。

0

試試這個

yourDate.ToUniversalTime() 

來源:here