最近、次のような(奇妙な)動作を発見しました。
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 では使用できません)。