POSIX到Olson / IANA时区格式转换

时间:2017-03-27 15:45:27

标签: python datetime timezone

我使用旧设备向服务器发送一些元数据。我需要操作以UTC为单位的日期时间。我还获得了设备位于POSIX格式的时区信息,例如。柏林:

CET-1CEST,M3.5.0/2,M10.5.0/3

但是,这种格式似乎不受pytz

等热门图书馆的支持

因此,我认为我只是将其转换为Olson格式,即:Europe/Berlin

但是我无法找到将POSIX格式转换为Olson格式的方法(我认为这是常见的并得到很好的支持)。你会怎么做?

1 个答案:

答案 0 :(得分:1)

您无法从POSIX转换为Olson。

POSIX字符串是一种用于编码偏移,缩写和转换的格式。它们只能代表一个标准时间"偏移,一个可选的单日"日光时间"偏移,以及它们之间的一对过渡。

Olson字符串(又名IANA,tzdb,tzinfo等)是标识符。他们引用tz数据中的ZoneLink条目。每个区域可以包含任意数量的偏移和转换(使用Rule条目)。这样可以真实地表示时区如何随时间变化。

可以为给定的Olson时区和给定的时间点(例如"现在")投射POSIX字符串,但反过来是不可能的。

在给出的示例中,给定Europe/Berlin,我可以计算当前的POSIX字符串,这看起来就像你展示的那样。但是,对于Europe/Paris和其他几个具有随时间变化的不同时区,将计算完全相同的字符串。没有办法区分它们。