django 中的日期时间错误

Datetime is wrong in django

我在东部标准时间 (EST)。夏令时从 2 周前开始,时钟向前拨了 1 小时(所以下午 5 点变成了下午 6 点)。我有 USE_TZ = True。 TIME_ZONE 设置为“EST”。

在我的应用程序中,我有一个提交日期的表单,例如凌晨 2 点。该日期仍然是凌晨 2 点,作为 DateTime 字段保存在模型中:event.start = date。我有一个呈现日期的视图,页面正确显示凌晨 2 点。

问题:event.start 评估为凌晨 3 点(美国东部标准时间)/早上 8 点(UTC),1 小时后它应该是什么!输入是凌晨 2 点,它甚至在模板中呈现凌晨 2 点,但由于某些内部原因 event.start 是上午 8 点(UTC)/凌晨 3 点(美国东部标准时间)。

但出于某种原因 django.utils.timezone.now() 给我正确的时间是凌晨 2 点,而不是凌晨 3 点。我的 OS 系统时间也给出了正确的时间,凌晨 2 点。我想安排凌晨 2 点的工作,但最终安排在凌晨 3 点,因为 event.start 由于某种原因被设置为凌晨 3 点!

我想用 UTC 时间。我该如何处理?

Eastern Standard Time 没有夏令时,与 UTC 硬偏移。当有夏令时时,从 Eastern Standard Time 切换到 Eastern Daylight Time(EDT)。

更多信息:https://www.timeanddate.com/time/zones/est

通常使用 Olson 标识符是更好的解决方案。它们是 IANA 时区数据库中使用的标识符。它们是基于位置的,因此当位置更改时区(包括夏令时)时,一切仍然有效。

更改 EST <-> EDT 的地方示例:

America/New_York

尝试将 TIME_ZONEEST 更改为您所需位置的 Olson 标识符。