好吧,这很奇怪。我有一个 Django 模型,正在通过 FactoryBoy 写入 Postgres 进行测试。
contract = ContractFactory(
effective_date=datetime.datetime(2023, 1, 1, tzinfo=pytz.timezone('US/Central'))
)
我在美国/中部,我希望数据库以 UTC 格式存储对象。 Postgres 中的日期时间应为 2023-01-01 06:00:00 UTC,因为时区之间的差异为 6 小时。
如果我取回对象并打印日期,那就错了!
2023-01-01 05:51:00+00:00
如果我直接从Postgres获取它,也是错误的:
2023-01-01 05:51:00.000000 +00:00
我检查了数据库中的原始时间,它是正确的。 Postgres 正在 Docker 容器中运行,如果我执行
select now()
,则 UTC 时间就很好。
这可能来自哪里?
在这里找到答案:unexpected results conversion timezones in python
使用 datatime 函数构建时间不起作用。它需要创建日期时间,然后进行本地化。