天天看點

Django 時間比本地實際時間慢8小時

在之前介紹 Django 中文化的文章《Django 中文本地化漢化方法》中留下了一個小小 bug 導緻了 Django 的時間比本地時間慢了整整8個小時。百度了一下發現有不少人也遇到了這樣的問題,但是不知道哪裡出了問題。

Django 時間比本地實際時間慢8小時

解決辦法

想解決這個問題隻要改一個設定就好了

# 打開項目的配置問卷 settings.py 
TIME_ZONE = 'UTC'
# 改為:
TIME_ZONE = 'Asia/Shanghai'
           

Why?

我的了解是 Django 支援時區的概念之後,存入資料庫的時間全部都是 UTC 時間

當我們設定

TIME_ZONE = 'UTC'

時我們獲得時間是 UTC 标準時間。而讀取資料的時由于設定的是 UTC 标準時間,是以不進行時區轉化。咱們中國法定時間是 UTC + 8 是以 Django 的時間就和我們的不一緻了

而當我們設定

TIME_ZONE = 'Asia/Shanghai'

(由于曆史原因就是上海時間,感興趣的自己搜尋一下吧)時,Django 會儲存轉化後的 UTC 标準時間,而當我們讀取資料的時候,根據設定将時間 +8 後呈現給我們。