2012-02-03 20 views
0

我有一個使用Microsoft JSON序列化程序的ASP.NET MVC3 Restful Web服務。此服務返回包含.NET DateTime值的數據。Web服務中JSON數據的時區偏移

Web服務由Silverlight客戶端訪問,該客戶端使用Newtonsoft JSON庫反序列化返回的數據。

我在客戶端獲得的日期值比從服務發送的值早5個小時。由於我在東部時區(美國),這似乎是本地時間從客戶端被解釋爲GMT的服務發送。

我的問題是:什麼是處理這種差異的好方法? Microsoft或Newtonsoft庫中是否有一些可以處理這個問題的東西。比從客戶收到的時間減去5小時更優雅一點。

感謝

+0

您能準確顯示從服務器返回日期/時間的確切方式嗎?這是正確的時區? – 2012-02-03 22:35:45

+0

「\\/Date(1328374553000)\\/\」 – 2012-02-04 17:13:15

+0

我有完全相同的問題,使用ext.net(反過來使用Newtonsoft)和asp.net web服務。任何*真實*答案? – dpant 2013-10-16 19:20:38

回答

1

首先看看這個問題(它是關於Backbone.js的,但是適用於你的問題以及):由How to handle dates in Backbone?

一些庫(比如Jackson)連載日期以UNIX時間默認。從服務器發送的數據中的日期/時間如何表示?如果它不是一個簡單的整數,則應該使用始終明確定義時區的ISO 8601表示(或UTC時間爲Z)。

如果時間是從服務器以文本形式發送的,但沒有時區,則服務器會錯誤地編組它。如果時間有正確的時區,但客戶端丟棄它 - 這是客戶端故障。

+0

感謝您花時間回答。我希望有些東西會直接由圖書館處理。我知道數據正在作爲UNIX數據時間發送。 「\\/Date(1328374553000)\\/\當然,調整接收時間並不難,我不想編寫自己的JSON串行器/解串器,不幸的是,寫他們不能以一致的方式處理日期/時間。如果ISO 8601被用來與我沒有問題。 – 2012-02-04 17:08:00