2014-06-14 19 views
0

我從共享數據庫檢索日期時間。更確切地說,我正在通過Convert.ToDateTime(timespan.ToString())檢索時間段並將其轉換爲日期時間。我有兩臺服務器在兩個不同的時區運行。asp.net datetime序列化返回不同的服務器上的不同值

一個返回的日期時間爲/Date(1402761600000)/另一個爲/Date(1402776000000)/,即14400000或4小時的差值。

只是一個預感,這是不知何時與時區有關(因爲我在格林威治標準時間-4)。

爲什麼我的時代會以不同的方式返回?我能做些什麼來防止這種情況發生?

+0

什麼是數據庫? –

+0

@JustinHelgerson,sql服務器,它實際上存儲爲一個時間跨度,它被轉換爲日期時間'Convert.ToDateTime(timespan.ToString)',以確保準確。 – MushinNoShin

+0

@Mate,參見上文。時間不與TZ信息一起存儲,DateTime不會引入時區信息。我在考慮時區在序列化過程中的參與。當然,這只是我的預感,它與時區有關。 – MushinNoShin

回答

1

Convert.ToDateTime將返回一個本地時間,這就是爲什麼你會得到不同時區的服務器不同的結果。

嘗試:

Convert.ToDateTime(ts.ToString()).ToUniversalTime(); 

將返回UTC時間。

+0

我通過指定UTC的日期時間類型來解決此問題。 'var datetime = Convert.ToDateTime(ts.ToString()); var utcDt = DateTime.SpecifyKind(datetime,DateTimeKind.Utc);'從DateTime.ToUniversalTime()的文檔判斷,這聽起來像仍然會導致時間不恰當地移動。 – MushinNoShin

相關問題