为啥我在 python 中看到时区异常[重复]

Posted

技术标签:

【中文标题】为啥我在 python 中看到时区异常[重复]【英文标题】:Why am I seeing timezone strangeness in python [duplicate]为什么我在 python 中看到时区异常[重复] 【发布时间】:2018-12-01 01:06:37 【问题描述】:

使用 Python3,我执行以下操作:

from datetime import datetime
from pytz import timezone
df = datetime(2018, 6, 1, hour=0, minute=0, tzinfo=timezone('US/Eastern'))
print(df)
2018-06-01 00:00:00-04:56

那么,为什么将日期时间设置为偏移量 -4:56?不应该是-5:00吗?为什么要休息 4 分钟?

【问题讨论】:

这就是为什么我在所有与时间相关的事情上都使用 Arrow。 【参考方案1】:
eastern_tz = timezone('US/Eastern')
eastern_time = eastern_tz.localize(datetime(2018, 6, 1, 0, 0))

这会给你正确的结果:

>>> print(eastern_time)
2018-06-01 00:00:00.000000-04:00

原因是 python datetime 模块时区对象与 pytz 时区对象不直接兼容。 pytz 文档说:

如果您想创建本地挂钟时间,您需要使用 本文档中记录的 localize() 方法

【讨论】:

以上是关于为啥我在 python 中看到时区异常[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥需要自定义异常类[重复]

为啥我们不能只抛出异常/可抛出而不是有多个异常[重复]

为啥使用用户定义的异常而不是简单地显示错误消息[重复]

为啥 JPA 重复持久方法不抛出异常?

python中的打印语句异常[重复]

C# Cognex,为啥他说空引用异常 [重复]