我需要获取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'。
我认为以前的代码并不了解每个国家/地区关于夏令时的政治决定,并且可能会根据夏令时的固定日期或类似日期获取补偿。由于我不知道我想问datetime
和pytz
的具体细节,这个假设正确吗?
如果不知道该如何获取任何时区的实际当前偏移量?
答案 0 :(得分:2)
我认为以前的代码并不了解每个国家/地区关于夏令时的政治决定,并且可能会根据夏令时的固定日期或类似日期为您提供补偿。
您的假设不正确。通过TZ Database记录并分发时区的政治变化。然后,可以在数百种不同的库,平台和操作系统中实现这些更改,例如您提到的pytz库。
您描述的对America/Santiago
的更改反映在TZDB 2016c中,该更改在pytz 2016.3中实现。如果您使用的是pytz 2016.3或更高版本,则您的代码会意识到这一变化。
Pytz很好,但是您可能需要考虑使用dateutil。 Version 2.5.2或更高版本具有此数据。