如果我从 Centos 6 服务器的控制台执行此命令
# date
我收到这个
Wed Oct 11 05:11:00 -03 2017
任何人都可以解释我为什么日期返回-03(UTC偏移量)
而不是这个
Tue Oct 10 12:30:50 AMST 2017
我该怎么做才能退回AMST值而不是数值-03?
注意:另外,如果我执行这个
# zdump /etc/localtime
/etc/localtime Wed Oct 11 05:27:33 2017 -03
zdump: warning: zone "/etc/localtime" abbreviation "-03" lacks alphabetic at start
注意2:使用UTC偏移量对于许多工具来说是意想不到的,所以我会避免它,这可能吗?
谢谢
答案1
看起来 tzdata 最近已经停止使用“发明的缩写”,例如红帽对此的报告:
自 tzdata-2016b 起,已针对新时区实施了提供 tzdata 时区缩写的新方法。创建新区域时,tzdata 现在将使用数字时区缩写(如“+03”),而不是早期发明新缩写(如“ASTT”)的命名约定。
此外,自 tzdata-2017a 起,有一项删除区域缩写的政策,这些缩写没有官方地位,是为了方便而发明的。
由于此更改,某些 tzdata-2016b 数据条目可能会导致从 tzdata-2005j 到 tzdata-2015e 版本派生的 zic 实现发出警告。 zdump 命令还可能针对这些新时区发出警告。
这似乎与您所看到的行为完全匹配。我在 Debian 系统上看到同样的情况:
$ zdump America/Sao_Paulo UTC
America/Sao_Paulo Wed Oct 11 11:19:19 2017 -03
zdump: warning: zone "America/Sao_Paulo" abbreviation "-03" lacks alphabetic at start
UTC Wed Oct 11 14:19:19 2017 UTC
使用过时版本的 tzdata 运行的不同系统显示“BRT”时区:
$ zdump America/Sao_Paulo UTC
America/Sao_Paulo Wed Oct 11 11:19:40 2017 BRT
UTC Wed Oct 11 14:19:40 2017 UTC
在这两种情况下,实际当地时间似乎都是正确的。问题还在于在 CentOS 中得到认可。
看起来你最好的选择是不要担心意外的区域缩写,或者,如果你真的关心这个并且不关心其他时区更新,你可以将 tzdata 包回滚到 2017a 之前的版本。