我想从 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
,它们占全部该时区统治着特定时区的整个历史。
时区的实际情况非常复杂,包括以下内容:
- 夏令时每年转换两次
- 夏令时转换四一年内
- 基准偏移量在特定年份发生一次变化
- 其中许多规则每年都会发生变化,有些规则每年都会有所不同