Django(13)django時區問題

Silent丿丶黑羽發表於2021-05-16

前言

我們都知道時區,標準時區是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指定時區的時間

相關文章