我最近注意到以下(奇怪的)行为:
user@pc:~$ date
Mi 21. Jun 12:03:10 CEST 2017
user@pc:~$ date +%Z
CEST
user@pc:~$ export TZ=`date +%Z`
user@pc:~$ date
Mi 21. Jun 10:03:30 CEST 2017
user@pc:~$ date +%Z
CEST
因此,将 TZ 环境变量设置为当前系统时区后,时钟会延迟 2 小时。它看起来像 UTC(CEST-2 小时是 UTC)。如果我现在将 TZ 设置为其他值,时钟保持不变:
user@pc:~$ export TZ=UTC
user@pc:~$ date
Mi 21. Jun 10:07:09 UTC 2017
user@pc:~$ export TZ=PDT
user@pc:~$ date
Mi 21. Jun 10:07:19 PDT 2017
但是,当我将 TZ 设置为 CEST-2 时,它又可以正常工作了。我有一点困惑
user@pc:~$ export TZ=CEST-2
user@pc:~$ date
Mi 21. Jun 12:28:16 CEST 2017
我正在使用 xUbuntu 16.04,但这种行为可以在 OpenSUSE 42.2 系统上重现。
在我看来,当没有 /usr/share/zoneinfo/ABC 文件时,时区“ABC+X”始终被视为“UTC+X”(谢谢德维拉供评论)。字符串“ABC”仅插入到打印出来的日期字符串中。
问题:
- 上述假设正确吗?
- 为什么
date
打印出不支持的时区缩写(即在 /usr/share/zoneinfo 中不可用)?