在新的 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
这些文件是由tzdata
package 提供的,因此 的输出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 年扎波罗热。