Django 1.4和时区

Raj*_*jat 4 python django timezone

在django docs中,写入了它们始终可以在设置中提供的TIME_ZONE中存储日期时间对象.

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

dge*_*gel 7

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

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

您还可以通过调用从设置中覆盖当前时区设置

from django.utils import timezone
timezone.activate('US/Central')
Run Code Online (Sandbox Code Playgroud)