我正在尝试创建一个函数,该函数将接受两个参数作为输入。
- 时间字符串("2021-08-13 19:00")
- 时区(-4)
我希望函数将给定时区的时间转换为我的计算机的本地时区(偏移)。有人能帮忙吗?
您可以通过timedelta对象从UTC偏移时间创建时区对象。然后使用tzlocal获取本地时区(即您的机器配置使用的时区),并使用astimezone进行转换。
,
from datetime import datetime, timedelta, timezone
from tzlocal import get_localzone # pip install tzlocal
def to_local(s, offsethours):
"""
convert date/time string plus UTC offset hours to date/time in
local time zone.
"""
dt = datetime.fromisoformat(s).replace(tzinfo=timezone(timedelta(hours=offsethours)))
# for Python < 3.7, use datetime.strptime(s, "%Y-%m-%d %H:%M") instead of datetime.fromisoformat(s)
return dt.astimezone(get_localzone())
time_string = "2021-08-13 19:00"
time_offset = -4
dt_local = to_local(time_string, time_offset)
print(repr(dt_local))
print(dt_local.isoformat())
print(dt_local.utcoffset())
# datetime.datetime(2021, 8, 14, 1, 0, tzinfo=<DstTzInfo 'Europe/Berlin' CEST+2:00:00 DST>)
# 2021-08-14T01:00:00+02:00
# 2:00:00