我如何将IANA / Olson时区转换为POSIX.1?

问题描述 投票:2回答:1

我正在用C为ESP32编写一些计时代码。我想在构建时确定的时区显示时间。 ESP32 docs显示了如何apply a timezone,但时区的格式必须为the POSIX.1 format,例如。对于澳大利亚悉尼,这是:

AEST-10AEDT,M10.1.0/2,M4.1.0/2

我希望能够在构建时将时区指定为IANA/Olson database名称,例如。 Australia/Sydney,并将其转换为POSIX.1格式以在代码中使用。 ESP32的构建系统使用CMake和sdkconfig文件,因此这意味着通过CMake定义的宏或插入sdkconfig的行。

CONFIG_TIMEZONE=AEST-10AEDT,M10.1.0/2,M4.1.0/2

是否有可以在其中查找的表或数据库,或者可以进行转换的跨平台实用程序? ESP IDF工具链高度依赖Python(2.7),因此即使Python中的某些功能也可以工作。将其集成到构建中的难度越小越好。我只是无法以独立实用程序或跨平台库的方式找到任何易于包装和从CMake调用的库。

((我知道POSIX.1格式包含的信息少于IANA数据,我很乐意使用POSIX.1表达式来提供当前行为,即UTC偏移量和夏时制。)

我正在用C为ESP32编写一些计时代码。我想在构建时确定的时区显示时间。 ESP32的文档展示了如何应用时区,但时区的格式...

python cmake timezone posix esp32
1个回答
1
投票

[不幸的是,我确实确实不能从已部署的TZif文件中获取此信息,因为正如您所注意到的,IANA区域中包含的信息多于POSIX字符串及任何此类字符串所能正确捕获的信息。用于生成文件的规则在编译过程中丢失。

© www.soinside.com 2019 - 2024. All rights reserved.