Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django未保存时区信息。如何正确存储此文件_Django_Datetime_Timezone - Fatal编程技术网

Django未保存时区信息。如何正确存储此文件

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

我在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.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小时的差异