如何在Python中获取任何时区的当前偏移量

时间:2018-06-20 12:58:38

标签: python datetime timezone pytz datetimeoffset

我需要获取Python中任何时区的当前偏移量。目前,我正在使用pytz库,并通过以下代码获取偏移量:

import datetime
import pytz
timezone = 'America/Punta_Arenas'
datetime.datetime.now(pytz.timezone(timezone)).utcoffset().total_seconds()/60/60
//prints -3
timezone = 'America/Santiago'
datetime.datetime.now(pytz.timezone(timezone)).utcoffset().total_seconds()/60/60
//prints -4

以“美国/圣地亚哥”为例:今年(2018年)的夏令时定为5月13日,而2015年则是全年的夏令时,2014年定为4月27日。因此,除日期和年份外,偏移量为'-3'或'-4'。

我认为以前的代码并不了解每个国家/地区关于夏令时的政治决定,并且可能会根据夏令时的固定日期或类似日期获取补偿。由于我不知道我想问datetimepytz的具体细节,这个假设正确吗?

如果不知道该如何获取任何时区的实际当前偏移量?

1 个答案:

答案 0 :(得分:2)

  

我认为以前的代码并不了解每个国家/地区关于夏令时的政治决定,并且可能会根据夏令时的固定日期或类似日期为您提供补偿。

您的假设不正确。通过TZ Database记录并分发时区的政治变化。然后,可以在数百种不同的库,平台和操作系统中实现这些更改,例如您提到的pytz库。

您描述的对America/Santiago的更改反映在TZDB 2016c中,该更改在pytz 2016.3中实现。如果您使用的是pytz 2016.3或更高版本,则您的代码会意识到这一变化。

Pytz很好,但是您可能需要考虑使用dateutilVersion 2.5.2或更高版本具有此数据。