Pourquoi zone.tab manque-t-il autant de fuseaux horaires?

12

Il y a plus d'un millier de fichiers de fuseau horaire sur votre boîte * nix typique (dans / user / share / zoneinfo). Beaucoup d'entre eux ne varient que par des dates historiques qui ont peu de pertinence pour les programmes qui ne se soucient que des dates récentes - ou même uniquement de l'heure actuelle. Mais peu importe, il y en a une tonne, et il est parfaitement légal de sélectionner l'un d'eux comme fuseau horaire pour votre système ainsi que d'utiliser l'un d'eux pour un programme ou un shell spécifique en définissant la variable d'environnement TZ. Ils sont tous valides.

Et puis il y a le fichier zone.tab (/usr/share/zoneinfo/zone.tab). Il ne répertorie qu'un peu plus de 400 fuseaux horaires (414 sur mon système). Il manque beaucoup de fuseaux horaires. Donc la question est pourquoi? Pourquoi ne sont-ils pas tous là-dedans? Et comme ils ne sont pas tous là-dedans, comment décide-t-on lesquels sont placés là-dedans?

zone.tab inclut un code de pays ainsi que la longitude et la latitude pour chaque fuseau horaire qu'il répertorie (ce qui est probablement la raison de l'existence du fichier), et tous les fuseaux horaires n'ont pas vraiment ceux-ci (par exemple, UTC n'a pas ces , et ce n'est pas dans zone.tab), donc clairement, tous les fuseaux horaires ne peuvent pas être répertoriés dans zone.tab. Mais pourquoi toutes celles qui correspondent à une ville ou une région réelle (comme la plupart d'entre elles) ne sont-elles pas répertoriées dans le fichier? Pourquoi seulement 414 au lieu des 1000+ qui sont réellement disponibles?

Jonathan M Davis
la source

Réponses:

6

Un fil intitulé Un appel renouvelé pour l'inclusion de zone.tab offre une explication de ce qui zone.tabest utilisé.

Son utilisation principale semble être d'afficher une carte des villes et de leurs emplacements, pour permettre à un utilisateur de choisir son fuseau horaire en cliquant sur une ville à proximité.

Dans cet esprit, il n'a pas besoin de connaître tous les alias de chaque ville, sachant qu'une manière préférée de s'y référer est suffisante. (Mais il semble qu'il comprenne toujours au moins une ville dans chaque pays.)

Les autres alias de chaque zone sont stockés dans le code source tzdata .

Par exemple, le backwardfichier a

Link    Asia/Kolkata        Asia/Calcutta

afin que les gens puissent utiliser la nouvelle orthographe ou l'ancienne orthographe.

Tous les autres fichiers /usr/share/zoneinfosont générés à partir de ce code source à l'aide de zic.

Mais il n'y a pas plus de 600 alias, alors pourquoi la grande différence?

Il y a généralement trois versions de chaque fuseau horaire généré: posix, rightet par défaut de votre système.

$ 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

Le tzcode Makefile montre comment ceux-ci sont générés et en mentionne la raison: posixignore les secondes intercalaires, les rightinclut.

Voir également:

Mikel
la source
-1

Par le lien suivant http://en.wikipedia.org/wiki/Tz_database

La base de données des fuseaux horaires est désormais gérée par Internet Assigned Numbers Authority.

JeffM
la source
3
Oui. Mais cela ne répond pas du tout à la question.
Jonathan M Davis