Django(13)django時區問題

前言

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