datego中的日期时间错误

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

我在东部标准时间(EST)。夏令时开始于2周前,时钟向前调1小时(因此5PM变成6PM)。我有USE_TZ = True。 TIME_ZONE设置为“ EST”。

[在我的应用中,我有一个提交日期的表单,例如2AM。该日期(仍是2AM)被保存为模型中的DateTime字段:event.start = date。我有一个渲染日期的视图,并且该页面正确显示了2AM。

问题:event.start计算得出的结果应该是预期的1小时(美国东部标准时间)/ 8AM(UTC)!输入为2AM,它甚至在模板中渲染2AM,但由于某种原因,内部event.start为8AM(UTC)/ 3AM(EST)。

但是由于某些原因,django.utils.timezone.now()给了我正确的时间2AM,而不是3AM。我的操作系统系统时间也给出了正确的时间,即2AM。我想为2AM安排作业,但是由于某种原因event.start设置为3AM,所以最终却安排为3AM!

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

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

Eastern Standard Time没有夏令时,很难与UTC抵消。有夏令时时,请从Eastern Standard Time切换到Eastern Daylight Time(EDT)。

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

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

示例:

America/New_York

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

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