2011-07-11 22 views

回答

1

你可以存儲時區爲每個用戶(使用戶選擇時,他創造了一個帳戶時區)偏移和以此爲基礎進行

+1

這不是一個好的做法,因爲時區偏移在美國每年會發生兩次變化,而且難以預測。 (這意味着他們隨着政府的意願而改變)。以UTC存儲要好得多,並且使用標準時區庫進行轉換,每當世界各國政府改變他們關於夏令時或時區邊界的想法時,該庫都會得到很好的維護和更新。 – Flimzy

+0

我認爲他的問題是,他不知道客戶的位置,所以他可以計算(無論是否有庫)用戶的時間。解決方案將存儲的位置,然後,在庫的幫助下做轉換 –

+0

我錯過了什麼?看起來這不可能是他的問題,因爲他說他使用的是單個服務器 - 所以他知道當他們連接到服務器時,根據服務器的時鐘。即使這是他的問題,如果他不知道他們連接的位置,他也不能存儲他們的時區偏移量。 – Flimzy

3

你還沒有真正告訴我們你的問題是什麼,但處理多個時區的最好辦法是要始終存儲您的時間戳的用戶UTC,並在插入時從本地轉換爲UTC,從UTC轉換爲本地以顯示。

+0

居然會發生什麼假設IM日誌記錄在上午9:30的轉換(GMT)從india.and logintime保存在usa.so服務器的地方當我在應用程序中看到過去的登錄時間時,我得到了錯誤的結果,如上午12:30,這意味着我在夜間(在印度)工作,這是不可行的..i將時間保存爲utc格式,並將cast結果作爲日期時間(CONVERT_TZ(REPLACE(max(TimeStamp),'+ 00:00',''),'+ 00:00','{2}')作爲DDateTime其中{2}是偏移量,我還使用下面的格式cast(CONVERT_TZ(max(TimeStamp),'+ 00:00','{2}')作爲DDateTime, – Deepakmahajan

+0

確保您所有的時間都是妥善轉換在存儲它們之前從本地到UTC。 – Flimzy