Centos 8 上的“date”命令不显示很多时区

Centos 8 上的“date”命令不显示很多时区

在新的 Centos 8 系统上,date即使时区已正确设置timedatectl/etc/localtime指向正确的 TZ 数据文件,该命令也不会显示许多时区。

例如:

# timedatectl set-timezone Asia/Tokyo
# date
Thu May  7 19:18:34 JST 2020

# timedatectl set-timezone Asia/Singapore
# ls -ld /etc/localtime
lrwxrwxrwx 1 root root 36 May  7 18:16 /etc/localtime -> ../usr/share/zoneinfo/Asia/Singapore
# date
Thu May  7 18:18:18 +08 2020

在第一种情况下,“JST”正确显示,但第二种情况显示“+08”而不是“SGT”。

时区名称在 Centos 6 中正确显示。我需要安装其他软件包吗?

编辑我

根据要求二进制斯塔,我尝试直接指定“新加坡”。没有喜悦。

# timedatectl set-timezone Singapore
# date
Thu May  7 20:52:53 +08 2020
# ls -ld /etc/localtime
lrwxrwxrwx 1 root root 31 May  7 20:52 /etc/localtime -> ../usr/share/zoneinfo/Singapore

事实上,许多时区仅用数字偏移量来报告。我对 的内容运行了一个脚本,/etc/zoneinfo/Asia并得到了 70 个时区的问题......

Aden  Thu May  7 16:06:44 +03 2020
Almaty  Thu May  7 19:06:44 +06 2020
Anadyr  Fri May  8 01:06:44 +12 2020
Aqtau  Thu May  7 18:06:44 +05 2020
Aqtobe  Thu May  7 18:06:44 +05 2020
Ashgabat  Thu May  7 18:06:44 +05 2020
Ashkhabad  Thu May  7 18:06:44 +05 2020
Atyrau  Thu May  7 18:06:44 +05 2020
Baghdad  Thu May  7 16:06:44 +03 2020
Bahrain  Thu May  7 16:06:44 +03 2020
Baku  Thu May  7 17:06:44 +04 2020
Bangkok  Thu May  7 20:06:44 +07 2020
Barnaul  Thu May  7 20:06:44 +07 2020
Bishkek  Thu May  7 19:06:44 +06 2020
Brunei  Thu May  7 21:06:44 +08 2020
Chita  Thu May  7 22:06:44 +09 2020
Choibalsan  Thu May  7 21:06:44 +08 2020
Colombo  Thu May  7 18:36:44 +0530 2020
Dacca  Thu May  7 19:06:44 +06 2020
Dhaka  Thu May  7 19:06:44 +06 2020
Dili  Thu May  7 22:06:44 +09 2020
Dubai  Thu May  7 17:06:44 +04 2020
Dushanbe  Thu May  7 18:06:44 +05 2020
Ho_Chi_Minh  Thu May  7 20:06:44 +07 2020
Hovd  Thu May  7 20:06:44 +07 2020
Irkutsk  Thu May  7 21:06:44 +08 2020
Istanbul  Thu May  7 16:06:44 +03 2020
Kabul  Thu May  7 17:36:44 +0430 2020
Kamchatka  Fri May  8 01:06:44 +12 2020
Kashgar  Thu May  7 19:06:44 +06 2020
Kathmandu  Thu May  7 18:51:44 +0545 2020
Katmandu  Thu May  7 18:51:44 +0545 2020
Khandyga  Thu May  7 22:06:44 +09 2020
Krasnoyarsk  Thu May  7 20:06:44 +07 2020
Kuala_Lumpur  Thu May  7 21:06:44 +08 2020
Kuching  Thu May  7 21:06:44 +08 2020
Kuwait  Thu May  7 16:06:44 +03 2020
Magadan  Fri May  8 00:06:44 +11 2020
Muscat  Thu May  7 17:06:44 +04 2020
Novokuznetsk  Thu May  7 20:06:44 +07 2020
Novosibirsk  Thu May  7 20:06:44 +07 2020
Omsk  Thu May  7 19:06:44 +06 2020
Oral  Thu May  7 18:06:44 +05 2020
Phnom_Penh  Thu May  7 20:06:44 +07 2020
Qatar  Thu May  7 16:06:44 +03 2020
Qostanay  Thu May  7 19:06:44 +06 2020
Qyzylorda  Thu May  7 18:06:44 +05 2020
Rangoon  Thu May  7 19:36:44 +0630 2020
Riyadh  Thu May  7 16:06:44 +03 2020
Saigon  Thu May  7 20:06:44 +07 2020
Sakhalin  Fri May  8 00:06:44 +11 2020
Samarkand  Thu May  7 18:06:44 +05 2020
Singapore  Thu May  7 21:06:44 +08 2020
Srednekolymsk  Fri May  8 00:06:44 +11 2020
Tashkent  Thu May  7 18:06:44 +05 2020
Tbilisi  Thu May  7 17:06:44 +04 2020
Tehran  Thu May  7 17:36:44 +0430 2020
Thimbu  Thu May  7 19:06:44 +06 2020
Thimphu  Thu May  7 19:06:44 +06 2020
Tomsk  Thu May  7 20:06:44 +07 2020
Ulaanbaatar  Thu May  7 21:06:44 +08 2020
Ulan_Bator  Thu May  7 21:06:44 +08 2020
Urumqi  Thu May  7 19:06:44 +06 2020
Ust-Nera  Thu May  7 23:06:44 +10 2020
Vientiane  Thu May  7 20:06:44 +07 2020
Vladivostok  Thu May  7 23:06:44 +10 2020
Yakutsk  Thu May  7 22:06:44 +09 2020
Yangon  Thu May  7 19:36:44 +0630 2020
Yekaterinburg  Thu May  7 18:06:44 +05 2020
Yerevan  Thu May  7 17:06:44 +04 2020

编辑二

来自的回应阿尼斯赫很有帮助,他说时区数据“由 tzdata 包提供,因此日期的输出将取决于此包”。

时区名称存在于 Centos 6 中,但不存在于 Centos 8 中。那么这是否表明tzdata包中存在错误?

森托斯 6:

$ zdump /usr/share/zoneinfo/Asia/Singapore
/usr/share/zoneinfo/Asia/Singapore  Fri May 15 08:25:58 2020 SGT
$ yum list installed | grep tz
tzdata.noarch                         2015d-1.el6                      installed
tzdata-java.noarch                    2015d-1.el6                      installed

森托斯 8:

$ zdump /usr/share/zoneinfo/Asia/Singapore
/usr/share/zoneinfo/Asia/Singapore  Fri May 15 08:52:30 2020 +08
$ yum list installed | grep tz
tzdata.noarch                        2019c-1.el8                            @anaconda
tzdata-java.noarch                   2019c-1.el8                            @AppStream

答案1

date/etc/localtime命令从指向目录中文件的时区数据文件获取名称/usr/share/zoneinfo/。当阅读内容时新加坡时区,您可以看到时区名称+08而时区的名称亚洲/东京日本科学技术协会

zdump命令是时区转储器)

$ zdump /usr/share/zoneinfo/Asia/Singapore 
/usr/share/zoneinfo/Asia/Singapore  Thu May 14 06:53:21 2020 +08

$ zdump /usr/share/zoneinfo/Asia/Tokyo 
/usr/share/zoneinfo/Asia/Tokyo  Thu May 14 07:53:31 2020 JST

这些文件是由tzdatapackage 提供的,因此 的输出date将取决于此 package 。

答案2

IANA(互联网号码分配机构)似乎在 2017 年更改了许多国家/地区的时区命名政策。我猜这些更改已反映在tzdata数据库中,并传播到 rpm。

正在阅读IANA 时区新闻页面

发布 2017a - 2017-02-28 00:05:36 -0800

[...]

过去和未来时区缩写的更改

作为正在进行的删除发明缩写项目的一部分,南美洲改用数字时区缩写。这避免了为新的智利新区发明缩写的需要。同样,将阿富汗、美属萨摩亚、亚速尔群岛、孟加拉国、不丹、英属印度洋领地、文莱、佛得角、查塔姆群岛、圣诞节 I、科科斯(基林)群岛、库克群岛、迪拜的发明时区缩写切换为数字时区缩写、东帝汶、尤克拉、斐济、法属波利尼西亚、格陵兰岛、印度支那、伊朗、伊拉克、基里巴斯、豪勋爵岛、麦格理、马来西亚、马尔代夫、马绍尔群岛、毛里求斯、密克罗尼西亚、蒙古、缅甸、瑙鲁、尼泊尔、新喀里多尼亚、纽埃、诺福克岛、帕劳、巴布亚新几内亚、菲律宾、皮特凯恩、卡塔尔、留尼汪岛、圣皮埃尔和密克隆群岛、萨摩亚、沙特阿拉伯、塞舌尔、 新加坡、所罗门群岛、托克劳、图瓦卢、威克岛、瓦努阿图、瓦利斯和富图纳群岛和新疆;1943 年前加纳的 20 分钟夏令时;1944 年前伯利兹和 1975 年前多米尼加共和国的半小时夏令时;1946 年前加那利群岛、1975 年前几内亚比绍、1969 年前冰岛、1942 年前印度夏令时、1964 年前印度尼西亚、1960 年前肯尼亚、1973 年前利比里亚、1967 年前马德拉群岛、1943 年前纳米比亚、1937-1939 年的荷兰、1971 年前巴基斯坦、1977 年前西撒哈拉以及 1880 年至 1924 年扎波罗热。

相关内容