【发布时间】:2020-10-01 11:14:10
【问题描述】:
查看 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: '没有找到键为 localtime 的时区'
所以我还需要使用第三方库吗?例如
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 backports(另请参阅 this answer):
pip install backports.zoneinfo
pip install tzdata # needed on Windows
【问题讨论】:
标签: python datetime timezone zoneinfo python-3.9