【问题标题】:timezones in python has couple of minutes shiftpython中的时区有几分钟的变化
【发布时间】:2022-01-08 12:51:00
【问题描述】:
from pytz import timezone

import datetime
utc = datetime.timezone.utc

tz = timezone("Europe/London")
now = datetime.datetime.now(utc)
date = now.replace(tzinfo=tz)
date_utc = date.astimezone(utc)

print(now.isoformat())
print(date.isoformat())
print(date_utc.isoformat())

可能会打印:

2021-12-01T21:30:09.170108+00:00
2021-12-01T21:30:09.170108-00:01   <---- why does it say -00:01 here?
2021-12-01T21:31:09.170108+00:00

到底为什么会有一分钟的轮班? 我是否缺少一些有关时区的基础知识?

【问题讨论】:

  • 这能回答你的问题吗? Weird timezone issue with pytz
  • 注意:对于 Python 3.9+,你有一个标准的 lib 模块 - zoneinfoExample。此外,那里没有“本地化陷阱”。 replace 可以安全地与 ZoneInfo 时区对象一起使用。
  • 是的,我找不到这个问题,我有点惊讶没有人提到它。但实际上有人做到了,不知道为什么我没有偶然发现它。广告第二条评论:很好,感谢您提供的信息!

标签: python timezone python-datetime pytz


【解决方案1】:

根据 PYTZ 的documentation

不幸的是,在许多时区使用标准日期时间构造函数的 tzinfo 参数“不起作用”。

您只能使用 localize()astimezone() 将 PYTZ 时区附加到日期时间对象

【讨论】:

  • 是的,我可以看到它不起作用 :D 那是什么原因呢?
  • 我相信datetime 是这样解释的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-03
  • 2020-11-02
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 2011-02-18
相关资源
最近更新 更多