Django + FactoryBoy -> Postgres 未正确将日期时间转换为 utc

问题描述 投票:0回答:1

好吧,这很奇怪。我有一个 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 时间就很好。

这可能来自哪里?

python django postgresql datetime timezone
1个回答
0
投票

在这里找到答案:unexpected results conversion timezones in python

使用 datatime 函数构建时间不起作用。它需要创建日期时间,然后进行本地化。

© www.soinside.com 2019 - 2024. All rights reserved.