Maye我在存儲數據時使用now()
獲取時間戳是錯誤的嗎?什麼是調整當地時區的最佳方式?
當我向用戶顯示日期/時間時,他當然希望看到當地時間,如果他輸入時間相關數據,而不是使用now()
,那麼他將輸入當地日期/時間。
爲什麼代碼越來越混雜的對話 - 處理時間戳的最佳做法是什麼? UTC/locla時間? &如何調整?
Maye我在存儲數據時使用now()
獲取時間戳是錯誤的嗎?什麼是調整當地時區的最佳方式?
當我向用戶顯示日期/時間時,他當然希望看到當地時間,如果他輸入時間相關數據,而不是使用now()
,那麼他將輸入當地日期/時間。
爲什麼代碼越來越混雜的對話 - 處理時間戳的最佳做法是什麼? UTC/locla時間? &如何調整?
只需在timestamp
mysql列類型中存儲所有日期,它可以處理所有時區問題,並且mysql將爲您完成所有工作。
因此,在開始你的應用程序啓動你需要的是指定什麼時區,你需要的日期屬於towith查詢:
SET time_zone='Asia/Vladivostok'
例如。
此外,在這種情況下,你不應該從PHP獲得任何時間戳,如果你需要插入當前時間 - 你必須使用mysql的NOW()
。
就是這樣。
將所有日期存儲在一個時區中,以保持一致。 UTC/GMT + 0對此很有幫助。
然後使用CONVERT_TZ將輸入轉換爲UTC/GMT + 0或從UTC/GMT + 0轉換爲用戶的時區。
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
由於所有的你問是SQL函數,你應該標記與您正在使用的RDBMS的問題(MySQL的?),而不是PHP。
+1我現在標記爲ODBC(I認爲這是一個PHP問題,但顯然不是)如果我將所有東西都轉換爲UTC,那麼它就是一致的,但正如我在問題中所說的,我必須轉換所有進出d/b的東西,這是一個疼痛(特別是如果我錯過了),因爲只有2個答案,而另一個似乎與這個答案矛盾,我會認爲沒有標準的「最佳實踐」。 – Mawg 2010-11-14 23:11:21
+1聽起來不錯。讓我們想象一下,我不知道s/w在什麼時區,我能以某種方式自動獲取它嗎? – Mawg 2010-11-14 23:07:27
@Mawg:這是另一個,JavaScript相關的問題;-) http://stackoverflow.com/questions/1091372/getting-the-clients-timezone-in-javascript - 這是一個可能的答案 – zerkms 2010-11-14 23:22:10
謝謝,但我是不允許客戶端解決方案:-( – Mawg 2010-11-17 00:10:18