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