如何查看我当前的时区规则?
我发现要设置它(,,tzdata
),但不知道如何去另一个方向。 (其中的文件是二进制的,我无法读取它们;也许它们是用 编译的?)zic
/etc/timezone
/usr/share/zoneinfo
zic
我如何知道是否制定了 TZ 规则以及制定了哪些 TZ 规则(例如,转入/转出 DST)?
答案1
您已经了解zic
,它将源区域文件编译为您在 中看到的二进制文件/usr/share/zoneinfo
。隐藏在手册页底部的是对 的引用zdump
,这就是您可能正在寻找的工具 ( zdump - time zone dumper
)。
以下是法国使用的时区的一些示例输出,显示 2017 年和 2018 年两年的 DST 跳转日期/时间。
zdump -V -c 2017,2019 Europe/Paris
Europe/Paris Sun Mar 26 00:59:59 2017 UT = Sun Mar 26 01:59:59 2017 CET isdst=0 gmtoff=3600
Europe/Paris Sun Mar 26 01:00:00 2017 UT = Sun Mar 26 03:00:00 2017 CEST isdst=1 gmtoff=7200
Europe/Paris Sun Oct 29 00:59:59 2017 UT = Sun Oct 29 02:59:59 2017 CEST isdst=1 gmtoff=7200
Europe/Paris Sun Oct 29 01:00:00 2017 UT = Sun Oct 29 02:00:00 2017 CET isdst=0 gmtoff=3600
Europe/Paris Sun Mar 25 00:59:59 2018 UT = Sun Mar 25 01:59:59 2018 CET isdst=0 gmtoff=3600
Europe/Paris Sun Mar 25 01:00:00 2018 UT = Sun Mar 25 03:00:00 2018 CEST isdst=1 gmtoff=7200
Europe/Paris Sun Oct 28 00:59:59 2018 UT = Sun Oct 28 02:59:59 2018 CEST isdst=1 gmtoff=7200
Europe/Paris Sun Oct 28 01:00:00 2018 UT = Sun Oct 28 02:00:00 2018 CET isdst=0 gmtoff=3600
要获取您自己时区的 DST 跳跃有点麻烦,但此命令将返回 2017 年的 DST 跳跃。在这里您可以看到我位于英国时区,以 BST/GMT 作为其时区标签(夏季/冬季时间):
zdump -V -c2017,2018 $(cat /etc/timezone)
Europe/London Sun Mar 26 00:59:59 2017 UT = Sun Mar 26 00:59:59 2017 GMT isdst=0 gmtoff=0
Europe/London Sun Mar 26 01:00:00 2017 UT = Sun Mar 26 02:00:00 2017 BST isdst=1 gmtoff=3600
Europe/London Sun Oct 29 00:59:59 2017 UT = Sun Oct 29 01:59:59 2017 BST isdst=1 gmtoff=3600
Europe/London Sun Oct 29 01:00:00 2017 UT = Sun Oct 29 01:00:00 2017 GMT isdst=0 gmtoff=0
我不知道有什么工具可以将二进制文件/usr/share/zoneinfo
反编译回规则文件。您可能会发现从源规则集开始更容易;它们很容易获得。