使用Zdump IANA使用具有DST和不具有DST的日期时间,纬度和经度偏移

问题描述

关于此时区有很多问题,我需要使用时间,纬度和经度来获取偏移量,例如+ 5.5,+ 6.0等,我想使用IANA数据库的zdump ,使用python脚本,不想使用pytz或时区查找器模块。只想解析时间,纬度和经度,然后获取带/不带DST的偏移量。我已经提取了tz2020a数据库

解决方法

对不起,您无法提出要求,因为IANA时区数据库不包含时区的地理边界。

IANA时区数据库中唯一的位置数据是zone.tabzone1970.tab中参考位置的坐标。但是,这没有告诉您有关区域的边界的任何信息。正如this answer末尾的图形所示,人们不能随便选择最近的城市。

正确的解决方案是使用提供geographic boundaries of time zones的库。对于Python,最好的选择是timezonefinder

一旦确定了时区,则可以使用zdump对该时区获取原始偏移信息。但是,在确定要使用的偏移量或偏移量集方面仍然会有一些挑战。并非所有时区都像具有单个标准偏移量或标准偏移量+夏时制一样简单。许多人在其整个历史中都多次更改了标准偏移量-因此您仍然需要对“ now”(ish)进行一些引用。

pytzdateutilarrow之类的库通过公开可以为您正确解释数据的API,使这一部分变得更加容易。如果您不想为此使用库,则可以在即将发布的Python 3.9版本中使用PEP 615中的内置时区支持。