我不知道如何使用datetime.tzinfo
模块。我必须将日期时间数据从 UTC 转换为本地时区,如果我检索“+2”(这意味着 gmt+2),如何将其转换为 tzinfo 对象?
此外,是否可以从 UTC 转换为本地时区并自动应用夏令时?如何设置仅在 dst 期间自动减去一小时?
您可以使用tzoffset
设置您检索的时区偏移量。例如,如果您得到“+2”,请解析该字符串,以便n = 2
:
from dateutil.tz import tzoffset
utc_dt = your_datetime.replace(tzinfo=tzoffset("UTC+0",0))
local_dt = utc_dt.astimezone(tzoffset("UTC+{}".format(n), n*60*60))
该变量utc_dt
仅用于确保您的原始日期时间具有正确的 UTC 时区作为属性,否则它将不起作用。然后您可以为您的目标本地时间设置以秒为单位的偏移量。
我不确定是否可以仅知道 UTC/GMT 偏移量就应用 DST,因为时区中的某些国家/地区可能不会应用它。如果你有准确的本地化,比如“欧洲/维也纳”,你可以使用 pytz 库和datetime.dst()方法来确定是否减去一小时。