如何在Python中使用datetime.tzinfo?

时间:2017-09-05 10:20:49

标签: python datetime timezone tzinfo

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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