![从 posix 时区表达式创建编译的 TZ 数据库](https://linux22.com/image/1471480/%E4%BB%8E%20posix%20%E6%97%B6%E5%8C%BA%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%88%9B%E5%BB%BA%E7%BC%96%E8%AF%91%E7%9A%84%20TZ%20%E6%95%B0%E6%8D%AE%E5%BA%93.png)
我想从 posix 表达式创建一个已编译的 TZ 数据库文件。
是否有任何 unix 实用程序可以根据 posix 表达式创建 TZ 数据库?
我确实检查了 zic 命令,但我找不到提供 posix 表达式规则作为 zic 输入的方法。有没有办法将 posix 表达式与 zic 一起使用?例如 EST5EDT、M10.3.0、M2.3.0
我需要编译的数据库,因为我希望时区在所有会话中保持不变,以便 /etc/localtime 可以链接到编译的数据库。
直接将 TZ 变量设置为 posix 表达式不会有帮助,因为它在重启后也不会在会话中持久存在。
答案1
不,这是不可能的。
POSIX 规则只能解释当前的规则,并且只能包含一对 DST 转换。
tz 数据库包含如下条目America/New_York
,它们占全部该时区统治着特定时区的整个历史。
时区的实际情况非常复杂,包括以下内容:
- 夏令时每年转换两次
- 夏令时转换四一年内
- 基准偏移量在特定年份发生一次变化
- 其中许多规则每年都会发生变化,有些规则每年都会有所不同