前言
我們都知道時區,標準時區是UTC時區
,django預設使用的就是UTC時區,所以我們儲存在資料庫中的時間是UTC的時間
,但是當我們做的網站只面向國內使用者,或者只是提供內部平臺使用,我們希望儲存在資料庫中的時間就是本地時間(東八區的時間),那麼django也是可以完成這樣的需求的
await時間和navie時間
什麼是await時間和navie時間?它是我們python中的兩種時間型別
- navie:不知道自己的時間表示哪個時區
- await:知道自己的時間表示的是哪個時區的
django設定東八區時間
我們想讓django中的時區變為東八區的時間,很簡單
USE_TZ = False
TIME_ZONE = 'Asia/Shanghai'
在settings.py
檔案中將USE_TZ
設定為False,將TIME_ZONE
設定為亞洲上海,之後我們在模型中建立時間欄位的時候,在資料庫中儲存的就是東八區的時間,而時間的型別會使navie型別
,所以我們就不能再把navie型別的時間轉換成其他時區的型別,所以我們一般不建議這麼做。
django設定UTC時區
django中預設設定的是UTC時區,所以我們資料庫中儲存時間就是UTC時區的時間,也就是0時區,比我們正常見到的少8個小時,但是它的時間是await型別,可以轉成任意時間的時區。
django中提供了2個時間的方法
- django.utils.timezone.now:會根據
settings.py
檔案中是否設定了USE_TZ=True
獲取當前的時間。如果為Ture,那麼就獲取一個aware型別
的UTC時間,如果為False,那麼就獲取一個navie型別的時間 - django.utils.timezone.localtime:會根據
setting.py
中的TIME_ZONE
來將一個aware型別
的時間轉換為TIME_ZONE
指定時區的時間