2012-04-09 135 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