システムに知られているタイムゾーンをどのようにリストできますか?

システムに知られているタイムゾーンをどのようにリストできますか?

私のシステムのzoneinfoデータベースにすべてのタイムゾーンのリストが欲しいのです(注:システムはdebian strecth linuxです)。

私の現在の解決策は次のとおりです。以下のすべてのパスを一覧表示します/usr/share/zoneinfo/posix。通常のファイルまたはシンボリックリンクです。

cd /usr/share/zoneinfo/posix && find * -type f -or -type l | sort

ただし、既知のすべてのタイムゾーンがこのディレクトリの下のパスにマップされているかどうかはわかりません。

質問

システムの現在のzoneinfoデータベースにあるフルタイムゾーンのリストを提供できるコマンドはありますか?

答え1

Debian 9 でコマンドを実行すると、ここにリストされているすべてのタイムゾーンが表示されます。https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

また、コマンドと同じリストをsystemd出力します。timedatectl list-timezones

私が知る限り、ここに含まれるデータはtzdataIANAによって直接提供されます。

This package contains data required for the implementation of
 standard local time for many representative locations around the
 globe. It is updated periodically to reflect changes made by
 political bodies to time zone boundaries, UTC offsets, and
 daylight-saving rules.

したがって、tzdataパッケージを最新の状態に保ちます。

答え2

未使用のシステムでリストを検索する場合は、実装から派生したスクリプトsystemdは次のとおりです。awktimedatectl list-timezones

awk '/^Z/ { print $2 }; /^L/ { print $3 }' /usr/share/zoneinfo/tzdata.zi

出力を にパイプするsortとほぼ同じ結果が得られますtimedatectl list-timezones

関連情報