查看zoneinfo
Python 3.9 中的模块,我想知道它是否还提供了一个方便的选项来检索 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))
有什么想法吗?
ps 要在 Python < 3.9 上尝试此操作,请使用backports
(另请参阅此答案):
pip install backports.zoneinfo
pip install tzdata # needed on Windows