在数据库中存储它的正确时间戳,但在查询它时,时间值正在改变。
models.py
aed = models.CharField(max_length=100)
gbp = models.CharField(max_length=100)
timestamp = models.DateTimeField(auto_now= False,auto_now_add=True)
数据库存储值
2018-01-10 13:17:05.107542+05:30
2018-01-10 13:18:01.803399+05:30
2018-01-10 13:19:01.873091+05:30
2018-01-10 13:20:04.476807+05:30
2018-01-10 13:21:01.913048+05:30
我的查询值
2018-01-10 07:47:05.107542+00:00
2018-01-10 07:47:05
2018-01-10 07:49:01.873091+00:00
2018-01-10 07:49:01
2018-01-10 07:51:01.913048+00:00
2018-01-10 07:51:01
2018-01-10 07:48:01.803399+00:00
2018-01-10 07:48:01
2018-01-10 07:50:04.476807+00:00
2018-01-10 07:50:04
时间变了。
我的设置.py
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
答案 0 :(得分:2)
https://www.postgresql.org/docs/current/static/datatype-datetime.html
对于
timestamp with time zone
,内部存储的值始终为 UTC (通用协调时间,传统上称为格林威治标准 时间,GMT)。具有指定显式时区的输入值是 使用该时区的适当偏移量转换为UTC。如果 在输入字符串中没有声明时区,则假定它是 在系统的TimeZone参数指示的时区中,是 使用时区的偏移量转换为UTC。当输出带有时区值的时间戳时,它始终是 从UTC转换为当前时区,并显示为 该地区的当地时间。
格式化我的。
您看到的是不同的客户端时区 - 您用于查询数据库的区域直接使用+05:30
和django one - UTC