在django docs中,写道他们总是可以在设置中提供的TIME_ZONE中存储日期时间对象。
我想问一下,对于时间感知对象是否足够,或者我们是否必须将它们转换为TIME_ZONE设置?即如果我的TIME_ZONE =“America / Los_Angeles”和USE_TZ = True,并且我尝试保存时区感知对象(“UTC”),那会有效吗?也就是说,在保存到数据库之前,django会将“UTC”时区对象转换为“America / Los_Angeles”吗?
答案 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')