搜尋

首頁  >  問答  >  主體

php - 使用datetime類型存放時間,時區問題如何解決

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

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

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

某草草某草草2799 天前808

全部回覆(7)我來回復

  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:10:23

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

    回覆
    0
  • 迷茫

    迷茫2017-05-16 13:10:23

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

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-16 13:10:23

    只建議使用時間戳

    回覆
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:10:23

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

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-16 13:10:23

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

    回覆
    0
  • 天蓬老师

    天蓬老师2017-05-16 13:10:23

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

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-16 13:10:23

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

    回覆
    0
  • 取消回覆