2014-03-13 41 views
2

我有一個服務器時間和客戶端時間差異的問題。如何處理服務器和本地時間的差異?

我在印度,我從​​印度存儲日期時間/時間戳(假設在14:00),但它在數據庫中持續存在+5.30小時(即,如果當地時間是14:00,則持續爲19 :30)。在展示我獲得後者的價值時(即:19:30)。這可能是因爲服務器時間的變化,服務器位於其他一些國家。

我有很多使用這個時間的過濾函數,因此我所有使用datetime的函數都受到了gettting的影響。如何處理這種情況? Plz給我建議。

回答

1

我認爲日期對象毫秒(EPOCH)服務器和客戶端之間傳遞。當服務器獲得EPOCH時,它計算的時間將按照其時區。通過String進行日期/時間通信是很好的。

所以客戶端發送日期的格式說"01/01/2014 14:00"(字符串值),則服務器String讀出它並且將其解析(使用格式MM/dd/yyyy HH:mm)爲日期對象並持續它。這樣在客戶端和服務器之間就不會有區別。

+0

這不完全相反嗎? EPOCH是絕對的,並且包含_no TZ spec_的字符串被解釋爲本地TZ? –

+0

OP希望保留在客戶端中選擇的時間,因爲它與服務器保持一致。使用EPOCH,服務器將根據當前時間計算時間。但是,對於字符串,沒有計算,只是解析(轉換) – sanbhat

+0

要將EPOCH轉換爲字符串,您需要給定的TZ。基於該TZ,重新轉換將產生相同的EPOCH,那麼這裏的收益是多少? –

1

我認爲

(即,如果本地時間爲14:00是堅持爲19:30)

是您的服務器的時區之間關係的不匹配您的本地系統,與絕對時間的差異無關。由於5.30小時不匹配,我假設數據庫以UTC格式存儲。您需要在與數據庫的連接上設置正確的TZ,或將數據庫中給出的時間戳轉換爲本地TZ(不管是什麼)。

相關問題