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...