我需要在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) DST被设定为5月13日,而2015年DST全年都被遵守,2014年被设定为4月27日。因此,在日期和年份上加上偏移量是'-3‘或'-4’。
我假设前面的代码不知道每个国家关于DST的政治决定,可能会根据固定的DST日期或类似的日期获得偏移量。既然我不知道datetime
和pytz
的具体细节,我宁愿问,这个假设是正确的吗?
如果它不知道,我如何才能获得任何时区的实际电流偏移量?
发布于 2018-06-21 04:20:37
我假设前面的代码不知道每个国家关于夏令时的政治决定,可能会根据固定的夏令时日期或类似的日期得到偏移量。
你的假设是错误的。时区的政治变化通过TZ Database记录和发布。然后,这些更改将在数百个不同的库、平台和操作系统中实现--例如您提到的pytz库。
您所描述的对America/Santiago
的更改反映在TZDB 2016c中,这是在pytz 2016.3中实现的。如果您使用的是pytz 2016.3或更高版本,那么您的代码就会意识到这一变化。
Pytz很好,但是您可能想要考虑使用dateutil。Version 2.5.2或更高版本包含此数据。
https://stackoverflow.com/questions/50948852
复制相似问题