なぜzone.tabには多くのタイムゾーンが欠落しているのでしょうか?

なぜzone.tabには多くのタイムゾーンが欠落しているのでしょうか?

典型的な*nixマシンには、1000以上のタイムゾーンファイルがあります(/user/share/zoneinfo内)。その多くは、過去の日付のみが異なるため、最近の日付のみ、または現在の時刻のみを扱うプログラムにはほとんど関係がありません。しかし、それでも、それらはたくさんあり、システムのタイムゾーンとしてそれらのいずれかを選択することや、TZ 環境変数を設定することによってそれらのいずれかを特定のプログラムまたはシェルに使用することは完全に合法です。それらはすべて有効です。

そして、zone.tabファイル(/usr/share/zoneinfo/zone.tab)があります。そこには400を少し超えるタイムゾーン(私のシステムでは414)しかリストされていません。多くタイムゾーンの。では、なぜでしょうか? すべてがそこに含まれていないのはなぜでしょうか? すべてがそこに含まれていないのであれば、どのタイムゾーンがそこに置かれるかはどうやって決まるのでしょうか?

zone.tabには国コードと、リストされている各タイムゾーンの経度と緯度が含まれています(これがファイルが存在する理由と思われます)。全てタイムゾーンには実際にそれらがあります(例えばUTCにはそれらはなく、zone.tabにも存在しません)。タイムゾーンは zone.tab にリストできます。しかし、実際の都市や地域に対応するもの (ほとんどがそうであるように) がすべてファイルにリストされていないのはなぜですか? 実際に使用できる 1000 以上のタイムゾーンではなく、なぜ 414 だけなのでしょうか?

答え1

スレッドタイトルzone.tab の収録を求める新たな嘆願何のために使用されるかについての説明を提供しますzone.tab

その主な用途は、都市とその場所の地図を表示し、ユーザーが近くの都市をクリックしてタイムゾーンを選択できるようにすることであるようです。

それを念頭に置くと、各都市の別名をすべて知る必要はなく、都市を参照するための好ましい方法を 1 つ知っていれば十分です。(ただし、各国に少なくとも 1 つの都市が常に含まれているようです。)

各ゾーンのその他のエイリアスは、tzデータソースコード。

例えば、backwardファイルには

Link    Asia/Kolkata        Asia/Calcutta

人々が新しいスペルと古いスペルのどちらでも使用できるようにするためです。

内の他のすべてのファイルは、/usr/share/zoneinfoを使用してこのソース コードから生成されますzic

しかし、600 を超えるエイリアスはないので、なぜ大きな違いがあるのでしょうか?

posix通常、生成されるタイムゾーンごとに、、、rightシステムのデフォルトの 3 つのバージョンがあります。

$ cd /usr/share/zoneinfo
$ find right -type f | wc -l
581
$ find posix -type f | wc -l
581
$ find . \( -name posix -o -name right \) -prune -o -type f | wc -l
586

tzコード Makefileこれらがどのように生成されるかを示し、その理由を説明します。posixうるう秒を無視し、rightうるう秒を含めます。

参照:

答え2

以下のリンクよりhttp://en.wikipedia.org/wiki/Tz_database

タイムゾーン データベースは現在、Internet Assigned Numbers Authority によって管理されています。

関連情報