timezone:如何获取规则

timezone:如何获取规则

如何查看我当前的时区规则?

我发现要设置它(,,tzdata),但不知道如何去另一个方向。 (其中的文件是二进制的,我无法读取它们;也许它们是用 编译的?)zic/etc/timezone/usr/share/zoneinfozic

我如何知道是否制定了 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反编译回规则文件。您可能会发现从源规则集开始更容易;它们很容易获得。

相关内容