【发布时间】:2021-03-22 13:54:22
【问题描述】:
我遇到了一个奇怪的问题。我有一个 Django 项目,默认使用(美国/丹佛)时区。
我在数据库中获得了几条记录。
id name date_create
1 foo Dec. 8, 2020, 6:15 p.m.
2 bar Dec. 1, 2020, 8:28 p.m.
当我打印上面的记录时,它的行为很奇怪。
>>> print(record_one.date_create.date())
>>> Dec. 9, 2020
>>> print(record_one.date_create)
>>> Dec. 8, 2020, 6:15 p.m.
>>> print(record_two.date_create.date())
>>> Dec. 2, 2020
>>> print(record_one.date_create)
>>> Dec. 1, 2020, 8:28 p.m.
我正在使用 python 3.5 和 Django2
Django 设置
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'America/Denver'
USE_I18N = True
USE_L10N = True
USE_TZ = True
【问题讨论】:
-
您使用的是哪个数据库?
-
@ArakkalAbu postgresql on aws 服务器
-
我几乎可以肯定
record_one.date_create将返回 DateTime 对象的__str__表示,它看起来像2020-12-11 01:00:00+00:00。所以,最后一个+00.00表示重新调整的时间是 UTC 而不是TIME_ZONE -
afaik,Django 将在 UTC 中保存时间(恕我直言,这是最佳做法),并且会在需要时转换为 XYZ 时区。
标签: python django timezone pytz