在查看 Python 3.9 的 zoneinfo
模块时,我想知道它是否还提供了一种方便的选项来检索 Windows 系统上的本地时间区域设置。
在 GNU/Linux 上,您可以执行以下操作:
from datetime import datetime
from zoneinfo import ZoneInfo
naive = datetime(2020, 6, 11, 12)
aware = naive.replace(tzinfo=ZoneInfo('localtime'))
但是在Windows上,这会引发
ZoneInfoNotFoundError: '未找到具有本地时间键的时区'
那么我是否仍然需要使用第三方库?例如:
import time
import dateutil
tzloc = dateutil.tz.gettz(time.tzname[time.daylight])
aware = naive.replace(tzinfo=tzloc)
由于time.tzname[time.daylight]
返回一个本地化的名称(在我的情况下是德语,例如“Mitteleuropäische Sommerzeit”),因此这也不起作用:
aware = naive.replace(tzinfo=ZoneInfo(tzloc))
有什么想法吗?
补充说明:如果要在Python < 3.9上尝试此操作,请使用backports
(也请参考此答案):
pip install backports.zoneinfo
pip install tzdata # needed on Windows