我使用旧设备向服务器发送一些元数据。我需要操作以UTC为单位的日期时间。我还获得了设备位于POSIX格式的时区信息,例如。柏林:
CET-1CEST,M3.5.0/2,M10.5.0/3
但是,这种格式似乎不受pytz
因此,我认为我只是将其转换为Olson格式,即:Europe/Berlin
但是我无法找到将POSIX格式转换为Olson格式的方法(我认为这是常见的并得到很好的支持)。你会怎么做?
答案 0 :(得分:1)
您无法从POSIX转换为Olson。
POSIX字符串是一种用于编码偏移,缩写和转换的格式。它们只能代表一个标准时间"偏移,一个可选的单日"日光时间"偏移,以及它们之间的一对过渡。
Olson字符串(又名IANA,tzdb,tzinfo等)是标识符。他们引用tz数据中的Zone
或Link
条目。每个区域可以包含任意数量的偏移和转换(使用Rule
条目)。这样可以真实地表示时区如何随时间变化。
可以为给定的Olson时区和给定的时间点(例如"现在")投射POSIX字符串,但反过来是不可能的。
在给出的示例中,给定Europe/Berlin
,我可以计算当前的POSIX字符串,这看起来就像你展示的那样。但是,对于Europe/Paris
和其他几个具有随时间变化的不同时区,将计算完全相同的字符串。没有办法区分它们。