Warum fehlen in zone.tab so viele Zeitzonen?

12

Ihre typische * nix-Box enthält über tausend Zeitzonendateien (in / user / share / zoneinfo). Viele von ihnen unterscheiden sich nur in historischen Daten, die für Programme, die sich nur um die jüngsten Daten - oder sogar nur um die aktuelle Zeit - kümmern, von geringer Relevanz sind. Unabhängig davon gibt es eine Menge davon, und es ist völlig legal, eine davon als Zeitzone für Ihr System auszuwählen und eine davon für ein bestimmtes Programm oder eine bestimmte Shell zu verwenden, indem Sie die Umgebungsvariable TZ festlegen. Sie sind alle gültig.

Und dann gibt es die zone.tab-Datei (/usr/share/zoneinfo/zone.tab). Es werden nur etwas mehr als 400 Zeitzonen aufgelistet (414 auf meinem System). Es fehlen viele Zeitzonen. Die Frage ist also warum? Warum sind sie nicht alle da drin? Und da sie nicht alle da drin sind, wie wird entschieden, welche dort hineingelegt werden?

zone.tab enthält einen Ländercode sowie Längen- und Breitengrad für jede aufgeführte Zeitzone (was vermutlich der Grund für das Vorhandensein der Datei ist), und nicht alle Zeitzonen haben diese (z. B. UTC hat diese nicht) , und es ist nicht in zone.tab), so klar, dass nicht jede Zeitzone in zone.tab aufgelistet werden kann. Aber warum sind nicht alle, die einer tatsächlichen Stadt oder Region entsprechen (wie die meisten von ihnen), in der Datei aufgeführt? Warum nur 414 anstelle der 1000+, die tatsächlich verfügbar sind?

Jonathan M Davis
quelle

Antworten:

6

Ein Thread mit dem Titel Ein erneutes Plädoyer für die Aufnahme von zone.tab bietet eine Erklärung, wofür zone.tabverwendet wird.

Seine Hauptverwendung scheint darin zu bestehen, eine Karte der Städte und ihrer Standorte anzuzeigen, damit ein Benutzer seine Zeitzone auswählen kann, indem er auf eine Stadt in ihrer Nähe klickt.

In diesem Sinne müssen nicht alle Aliase für jede Stadt bekannt sein, es reicht aus, eine bevorzugte Art der Bezugnahme zu kennen. (Aber es sieht so aus, als würde es in jedem Land immer mindestens eine Stadt geben.)

Die anderen Aliase für jede Zone sind im tzdata- Quellcode gespeichert .

Zum Beispiel hat die backwardDatei

Link    Asia/Kolkata        Asia/Calcutta

damit die Leute die neue Schreibweise oder die alte Schreibweise verwenden können.

Alle anderen Dateien in /usr/share/zoneinfowerden aus diesem Quellcode mit generiert zic.

Aber es gibt nicht mehr als 600 Aliase. Warum also der große Unterschied?

Es gibt in der Regel drei Versionen jeder Zeitzone generiert: posix, rightund das Standard Ihres Systems.

$ 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

Der tzcode Makefile zeigt, wie diese generiert werden, und nennt den Grund dafür: posixIgnoriert Schaltsekunden und rightschließt sie ein.

Siehe auch:

Mikel
quelle
-1

Über den folgenden Link http://en.wikipedia.org/wiki/Tz_database

Die Zeitzonendatenbank wird jetzt von der Internet Assigned Numbers Authority verwaltet.

JeffM
quelle
3
Ja. Aber das beantwortet die Frage überhaupt nicht.
Jonathan M Davis