Checking out the zoneinfo
module in Python 3.9, I was wondering if it also offers a convenient option to retrieve the local timezone (OS setting) on Windows.
On Linux, you can do
from datetime import datetime
from zoneinfo import ZoneInfo
naive = datetime(2020, 6, 11, 12)
aware = naive.replace(tzinfo=ZoneInfo('localtime'))
but on Windows, that throws
ZoneInfoNotFoundError: 'No time zone found with key localtime'
so would I still have to use a third-party library? e.g.
import time
import dateutil
tzloc = dateutil.tz.gettz(time.tzname[time.daylight])
aware = naive.replace(tzinfo=tzloc)
Since time.tzname[time.daylight]
returns a localized name (German in my case, e.g. 'Mitteleurop?ische Sommerzeit'), this doesn't work either:
aware = naive.replace(tzinfo=ZoneInfo(tzloc))
Any thoughts?
p.s. to try this on Python < 3.9, use backports
(see also this answer):
pip install backports.zoneinfo
pip install tzdata # needed on Windows
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…