2012-04-09 131 views
3

在django文檔中,他們總是可以將日期時間對象存儲在設置中提供的TIME_ZONE中。Django 1.4和時區

我想問這是它恰好足以日期時間知曉對象還是必須把它們轉換成TIME_ZONE設置?即如果我的TIME_ZONE =「America/Los_Angeles」和USE_TZ = True,並且我嘗試保存「UTC」中的時區感知對象,那麼這樣做會起作用嗎?也就是說,在保存到數據庫之前,django會將該「UTC」時區對象轉換爲「America/Los_Angeles」嗎?

回答

7

我相信,與USE_TZ = True django將保存一切以UTC的數據庫。每個DateTime對象都必須具有時區感知才能保存。當django從數據庫中檢索日期時間時,它會自動將其從UTC改變爲在設置中由TIME_ZONE指示的時區中的感知時間。

因此,要回答你的問題,如果你有一個UTC時區知道日期時間(比方說19:00),並保存它,它就會到數據庫保存爲19:00。當你找回它,Django會使其TZ意識到「美國/ Los_angelos」這樣的日期時間現在是12:00。 TZ意識到情況下獲得本地化的UTC已經保存了之前他們和進行逆向時:

您也可以通過調用

from django.utils import timezone 
timezone.activate('US/Central') 
+1

是的,這是它的主要內容覆蓋從什麼是在設置的當前時區設置他們從數據庫中檢索。 – 2012-04-09 20:18:18

+0

感謝@dgel的全面解答! – Rajat 2012-04-09 20:47:18