【发布时间】:2020-12-27 20:18:24
【问题描述】:
关于这个时区有很多问题,我需要使用时间,纬度和经度来获取偏移量例如+5.5,+6.0等,我想使用IANA数据库的zdump ,使用 python 的脚本,不想使用 pytz 或 timezone finder 模块。只想解析时间,纬度和经度,然后获取带/不带 DST 的偏移量。我已经提取了 tz2020a 数据库。
【问题讨论】:
关于这个时区有很多问题,我需要使用时间,纬度和经度来获取偏移量例如+5.5,+6.0等,我想使用IANA数据库的zdump ,使用 python 的脚本,不想使用 pytz 或 timezone finder 模块。只想解析时间,纬度和经度,然后获取带/不带 DST 的偏移量。我已经提取了 tz2020a 数据库。
【问题讨论】:
抱歉,由于 IANA 时区数据库不包括时区的地理边界,因此您的问题是不可能的。
IANA 时区数据库中唯一的位置数据是zone.tab 和zone1970.tab 中参考位置的坐标。但是,这并没有告诉您该区域的边界。不能只选择最近的城市,如this answer 末尾的图表所示。
正确的解决方案是使用提供geographic boundaries of time zones 的库。对于 Python,目前最好的选择是timezonefinder。
一旦您确定了时区,您就可以使用该时区的 zdump 来获取原始偏移信息。但是,在确定要使用的偏移量或偏移量集时,您仍然会遇到一些挑战。并非所有时区都像具有单个标准偏移或标准偏移 + 夏令时一样简单。许多人在其历史上多次更改标准偏移量 - 所以您仍然需要参考“现在”(ish)。
pytz、dateutil 或 arrow 等库通过公开为您正确解释数据的 API 使该部分变得更加容易。如果您不想为此使用库 - 您可以在即将发布的 Python 3.9 版本中使用来自 PEP 615 的内置时区支持。
【讨论】: