"export TZ=`date +%Z`" は "date" 出力に混乱を招きます。

最近、次のような(奇妙な)動作を発見しました。

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」は、印刷された日付文字列に単に挿入されます。

質問:

  1. 上記の仮定は正しいですか?
  2. dateサポートされていないタイムゾーンの略語が印刷されるのはなぜですか(つまり、/usr/share/zoneinfo では使用できません)。

ベストアンサー1

おすすめ記事