zone.tabに非常に多くのタイムゾーンがないのはなぜですか?


12

典型的な* nixボックス(/ user / share / zoneinfo内)には1000を超えるタイムゾーンファイルがあります。それらの多くは、最近の日付のみ、または現在の時刻のみに注意を払うプログラムにはほとんど関係のない歴史的な日付でのみ異なります。しかしかかわらず、そこにありますそれらのトンが、それはあなたのシステムのタイムゾーンとして、それらのいずれかを選択するだけでなく、TZ環境変数を設定することで、特定のプログラムまたはシェルのためにそれらのいずれかを使用するように完全に合法です。それらはすべて有効です。

そして、zone.tabファイル(/usr/share/zoneinfo/zone.tab)があります。400を超えるタイムゾーン(私のシステムでは414)しかリストされていません。多くのタイムゾーンが欠落しています。だから、問題はなぜですか?なぜ彼らはすべてそこにいないのですか?そして、彼らはそこにすべてではないので、どの人がそこに入れられるかはどのように決定されますか?

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

回答:


6

zone.tabを含めるための更新された嘆願というタイトルのスレッドzone.tabは、何のために使用されるのかの説明を提供します。

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

それを念頭に置いて、各都市のすべてのエイリアスを知る必要はありません。それを参照する好ましい方法を知っていれば十分です。(ただし、各国の少なくとも1つの都市が常に含まれているように見えます。)

各ゾーンの他のエイリアスは、tzdataソースコードに保存されます。

たとえば、backwardファイルには

Link    Asia/Kolkata        Asia/Calcutta

人々が新しいスペルまたは古いスペルを使用できるようにします。

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

しかし、600以上のエイリアスがないのに、なぜ大きな違いがあるのでしょうか?

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

$ 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

tzcodeの Makefileものはどのように生成されるかを示し、そしてそれらの理由を述べて:posix、うるう秒を無視しright、それらを含んでいます。

こちらもご覧ください:


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.