我在东部标准时间(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时间。我该如何处理?
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_ZONE
从EST
更改为Olson标识符。