4

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

我想问一下,仅对时间感知对象进行约会就足够了,还是我们必须将它们转换为 TIME_ZONE 设置?即,如果我的 TIME_ZONE = "America/Los_Angeles" 和 USE_TZ = True,并且我尝试保存“UTC”中的时区感知对象,那会起作用吗?也就是说,django 会在保存到数据库之前将该“UTC”时区对象转换为“America/Los_Angeles”吗?

4

1 回答 1

8

我相信使用USE_TZ = Truedjango 会将所有内容以 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')
于 2012-04-09T19:57:33.797 回答