關於django的時區設定

2021-09-20 18:01:16 字數 822 閱讀 1526

django如果開啟了time zone功能,則所有的儲存和內部處理,甚至包括直接print顯示全都是utc的。只有通過模板進行表單輸入/渲染輸出的時候,才會執行utc本地時間的轉換。

所以我建議後台處理時間的時候,最好完全使用utc,不要考慮本地時間的存在。而顯示時間的時候,也避免手動轉換,盡量使用django模板系統代勞。

啟用use_tz = true後,處理時間方面,有兩條 「**法則」:

保證儲存到資料庫中的是 utc 時間;

在函式之間傳遞時間引數時,確保時間已經轉換成 utc 時間;

比如,通常獲取當前時間用的是:

import datetime

now = datetime.datetime.now()

啟用use_tz = true後,需要寫成:

import datetime 

from django.utils.timezone import utc

utcnow = datetime.datetime.utcnow().replace(tzinfo=utc)

模板

除非應用支援使用者設定自己所在的時區,通常我們不需要關心模板的時區問題。模板在展示時間的時候,會使用settings.time_zone中的設定自動把 utc 時間轉成settings.time_zone所在時區的時間渲染。

一般設定為:

time_zone = 'asia/shanghai'

django時區設定 timezone

django時區設定 timezone 預設 timezone america chicago 以前的版本,現在的版本預設的都是utc時間。chicago時間,為utc gmt 6 小時 部署到伺服器上,如果將timezone設定為none,則會使用伺服器的時區。正常情況下使用時區的情況是 1.如果...

Django的時區設定問題

django預設的時區是utc,平時是沒有什麼影響的,但是在需要將時間戳轉換成本時區的時間或者是獲取當前的本地的localtime的時候就出現了問題。之前程式在測試時是執行在windows環境,所以即使settings.py中的time zone使用預設時區,django也會根據本機的時區使用當前時...

Django 和時區設定的問題

written on wednesday,august 19,2009 django 1.1 及其之前的版本,時區處理這一塊算是比較混亂的了 依賴資料庫管理系統本身 django 針對 postgresql 做了特殊處理 跨平台能力弱 python 標準庫的 tz 環境變數依賴 nix 作業系統 w...