典型的な*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 によって管理されています。