我们有一个嵌入式 Linux 系统,用户需要能够通过提供 POSIX 字符串(例如 WEuropeStandardTime-1DaylightTime,M3.5.0,M10.5.0/3)来永久设置系统的时区。
用户通过我们开发的 Web 服务与系统交互,因此我们可以完全控制实现。我正在寻找 C/C++ 解决方案。
我一直在查看 timedatectl -set-timezone,但它只接受 Olson 时区描述,而不接受 POSIX 时区字符串。我在想我可以解析 tzdata 以找到 POSIZ 时区字符串的匹配项,但是在开始这条路径之前,我想知道是否有更好的方法,或者是否已经有一个库来进行这种转换。
我对设置 TZ 环境变量不以为然,因为它是对 timedatectl 设置的系统日期和时间的覆盖,感觉就像一个障碍。另外,我不确定如何尽早设置它以使所有从引导运行的软件都可以看到相同的时间。