Django 1.4和时区

时间:2012-04-09 19:43:50

标签: python django timezone

在django docs中,写道他们总是可以在设置中提供的TIME_ZONE中存储日期时间对象。

我想问一下,对于时间感知对象是否足够,或者我们是否必须将它们转换为TIME_ZONE设置?即如果我的TIME_ZONE =“America / Los_Angeles”和USE_TZ = True,并且我尝试保存时区感知对象(“UTC”),那会有效吗?也就是说,在保存到数据库之前,django会将“UTC”时区对象转换为“America / Los_Angeles”吗?

1 个答案:

答案 0 :(得分:7)

我相信使用USE_TZ = True django会将所有内容保存到UTC中。每个DateTime对象必须具有时区感知才能保存。当django从数据库中检索日期时间时,它会自动将其从UTC更改为设置中TIME_ZONE指示的时区中的识别时间。

所以要回答你的问题,如果你有一个以UTC为准的时区感知日期时间(假设是19:00)并保存它,那么它将保存到数据库为19:00。当你检索它时,django会在“America / Los_angelos”中识别出TZ,所以日期时间现在是12:00。

您还可以通过调用

覆盖设置中的当前时区设置
from django.utils import timezone
timezone.activate('US/Central')