5

我不知道如何使用datetime.tzinfo模块。我必须将日期时间数据从 UTC 转换为本地时区,如果我检索“+2”(这意味着 gmt+2),如何将其转换为 tzinfo 对象?

此外,是否可以从 UTC 转换为本地时区并自动应用夏令时?如何设置在 dst 期间自动减去一小时?

4

2 回答 2

3

Python 并没有真正实现良好的时区。根据文档, tzinfo 只是一个旨在由用户实现的抽象类。

我建议使用第三方pytz模块来处理时区。

于 2017-09-05T10:51:07.690 回答
1

您可以使用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()方法来确定是否减去一小时。

于 2017-09-05T11:34:59.667 回答