python中的时区有几分钟的变化

Posted

技术标签:

【中文标题】python中的时区有几分钟的变化【英文标题】:timezones in python has couple of minutes shift 【发布时间】: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 模块 - zoneinfo。 Example。此外,那里没有“本地化陷阱”。 replace 可以安全地与 ZoneInfo 时区对象一起使用。 是的,我找不到这个问题,我有点惊讶没有人提到它。但实际上有人做到了,不知道为什么我没有偶然发现它。广告第二条评论:很好,感谢您提供的信息! 【参考方案1】:

根据 PYTZ 的documentation

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

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

【讨论】:

是的,我可以看到它不起作用 :D 那是什么原因呢? 我相信datetime 是这样解释的

以上是关于python中的时区有几分钟的变化的主要内容,如果未能解决你的问题,请参考以下文章

NSdate(时区)中的问题日期时间显示过去 5 小时 30 分钟

两台服务器中的PHP相同时区不同分钟

让 Python 响应 Windows 时区的变化

python中的时区感知与时区天真

使用strptime进行Python解析 - 月日时间:分钟:秒年时区 - 与格式不匹配

Oracle sql查询需要根据时区变化