php - 使用datetime類型存放時間,時區問題如何解決
某草草
某草草 2017-05-16 13:08:23
0
7
769

資料庫有使用 datetime 欄位類型來記錄時間,伺服器時區、mysql時區、PHP時區問題該如何設定?

方案一、
所有伺服器全部統一使用UTC時區,PHP程式使用UTC時區,寫入到資料庫的 datetime 類型時間就是 UTC,拿出來再轉當地時區。

方案二、
所有伺服器的時區隨意設置,程式時區隨意設置,但是所有涉及時間儲存的都使用 int 型別存時間戳記。

某草草
某草草

全部回覆(7)
我想大声告诉你

為啥你不設定你的資料庫,php都是Asia/Shanghai這個時區呢。

迷茫

伺服器的時區一定要統一。通常我都是在資料庫裡記錄時間戳記。因為我覺得搜尋起來方便。跨國訪問的話。格式化時間戳記的時候在進行對應的處理就好了。

巴扎黑

只建議使用時間戳

大家讲道理

終於知道為什麼時間必須用時間戳了,原來是因為時區問題。但是laravel中carbon類別好像把這個問題解決了,可以隨意轉換時間格式,當然時間戳性能最強悍,尤其是搜尋的時候,int類型效率比datetime要高很多。

伊谢尔伦

嚴格來說,不管你處在地球上的哪個地方,任意時間點的時間戳記都是一樣的。例如1452783600這個時間戳,在巴黎是下午4點在舊金山就是早上7點。這點有利於線上和客戶端分散式應用統一追蹤時間資訊。

Peter_Zhu

+8小時,另外所有時間格式最好是用時間戳保存,時間戳記不會出現時區問題,時間戳沒有時區的概念。
嚴格來說,不管你處在地球上的哪個地方,任意時間點的時間戳記都是一樣的。

洪涛

1.使用datetime,php/mysql时区设置为UTC+08
2.使用int,直接存时间戳,显示的时候再使用date格式化一下

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板