Django未保存时区信息。如何正确存储此文件
我在ajax视图中获得了以下代码:Django未保存时区信息。如何正确存储此文件,django,datetime,timezone,Django,Datetime,Timezone,我在ajax视图中获得了以下代码: now = pytz.timezone("America/Guayaquil").localize(datetime.now()) print("HOUR: %s" % now.hour) new_timer = WorkTime.objects.create(inicio=now) print("new_timer.id: %s" % new_timer.id) print("new_timer.hou
now = pytz.timezone("America/Guayaquil").localize(datetime.now())
print("HOUR: %s" % now.hour)
new_timer = WorkTime.objects.create(inicio=now)
print("new_timer.id: %s" % new_timer.id)
print("new_timer.hour %s" % new_timer.inicio.hour)
它打印这个:
HOUR: 18
new_timer.id: 16
new_timer.hour 18
Timer object:
16
23
“inicio”是一个DateTimeField。然后我从常规视图访问同一对象以呈现html,代码如下:
last_timer = TiempoEmpresarial.objects.filter(final__isnull=True).last()
print("Timer object:")
print(last_timer.id) # is it the same obj?
print(last_timer.inicio.hour)
它打印这个:
HOUR: 18
new_timer.id: 16
new_timer.hour 18
Timer object:
16
23
它是同一个对象,id=16。但时间不同。为什么?Django在数据库中存储UTC时间,渲染时,
时区
和在设置中使用
。py
决定时区
在您的情况下,尝试
print(last_timer.inicio)
,您会看到类似于datetime.datetime(2019,12,17,3,17,6,760770,tzinfo=)
Django在数据库中存储UTC时间,渲染时,时区
和在设置中使用
.py
决定时区
在您的情况下,尝试
print(last_timer.inicio)
,您会看到类似于datetime.datetime(2019、12、17、3、17、6、760770、tzinfo=)
的内容,您现在在美国/瓜亚基尔
时区显式地创建,该时区比UTC
早5小时
将模型保存到数据库时,datetime字段
将转换为并存储在UTC
中,如中所述:“启用时区支持时,Django将在数据库中以UTC存储日期时间信息。”
当您稍后检索该值时,您会得到UTC
版本,因此会有5小时的差异。您明确地在美国/Guayaquil
时区中创建现在
,即UTC
之前的5小时
将模型保存到数据库时,datetime字段
将转换为并存储在UTC
中,如中所述:“启用时区支持时,Django将在数据库中以UTC存储日期时间信息。”
稍后检索该值时,会得到UTC
版本,因此会出现5小时的差异