pytz 模块的 Python 时区问题

Python Time Zone issue with pytz module

提问人:Abhishek Singh 提问时间:10/5/2023 最后编辑:FObersteinerAbhishek Singh 更新时间:10/6/2023 访问量:62

问:

我已经编写了一个代码来处理日期时间,但它给出的结果不一致。


def date_time_conversion(str_dt):
    brussels = pytz.timezone("Europe/Brussels")
    converted_date = datetime.strptime(str_dt, '%Y.%m.%d %H.%M.%S')
    b = brussels.localize(converted_date)
    return b

每当我在 2037 年之前的任何日期运行此代码时,它都会正确检测夏令时。但是每当我在 2037 年之后的任何一年运行它时,它都无法检测到夏令时

检测到的 DST 示例:

date_time_conversion('2036.08.05 00:00:00')

输出:datetime.datetime(2037, 8, 5, 0, 0, tzinfo =<DstTzInfo 'Europe/Brussels' CEST+2:00:00 DST>)

date_time_conversion('2036.01.05 00:00:00')

输出:datetime.datetime(2037, 8, 5, 0, 0, tzinfo =<DstTzInfo 'Europe/Brussels' CET+1:00:00 STD>)

但是对于 2038 年及之后的任何日期:

未检测到 DST 示例:

date_time_conversion('2038.08.05 00:00:00')

输出:datetime.datetime(2038, 5, 0, 0, 0, tzinfo =<DstTzInfo 'Europe/Brussels' CET+1:00:00 STD>)

date_time_conversion('2038.01.05 00:00:00')

输出:datetime.datetime(2038, 1, 5, 0, 0, tzinfo =<DstTzInfo 'Europe/Brussels' CET+1:00:00 STD>)

这是我第一次处理时区,所以请原谅我任何愚蠢的逻辑错误。

Python 日期时间 时区 pytz

评论

3赞 FObersteiner 10/6/2023
这是一个已知问题,可以追溯到 PYTZ 如何处理 IANA tz 数据库输入。请注意,pytz 已被弃用了一段时间;从 Python 3.9 开始,您可以使用 zoneinfo
1赞 FObersteiner 10/6/2023
pytz 问题的潜在重复:tz_convert() 将来没有给出正确的(夏季)时间
0赞 Abhishek Singh 10/8/2023
非常感谢你为我指出正确的方向。

答: 暂无答案