在 django 文档中,它们总是可以将日期时间对象存储在设置中提供TIME_ZONE中。
我想问一下,确定时间感知对象的日期是否足够,或者我们必须将它们转换为TIME_ZONE设置? 即,如果我的TIME_ZONE = "美国/Los_Angeles" 并且 USE_TZ = True,并且我尝试保存一个时区感知对象,该对象为"UTC",这会起作用吗?也就是说,django 会在保存到数据库之前将"UTC"时区对象转换为"America/Los_Angeles"吗?
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')