Checking out the zoneinfo
module in Python 3.9, I was wondering if it also offers a convenient option to retrieve the local time zone (OS setting) on Windows.
On GNU/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