Auf einem typischen *nix-Rechner (in /user/share/zoneinfo) gibt es über tausend Zeitzonendateien. Viele davon unterscheiden sich nur in historischen Daten, was für Programme, die sich nur für aktuelle Daten interessieren - oder sogar nur für die aktuelle Zeit - wenig relevant ist. Aber unabhängig davon gibt esSindEs gibt eine Menge davon, und es ist völlig legal, eine davon als Zeitzone für Ihr System auszuwählen sowie eine davon für ein bestimmtes Programm oder eine Shell zu verwenden, indem Sie die Umgebungsvariable TZ festlegen. Sie sind alle gültig.
Und dann gibt es noch die Datei zone.tab (/usr/share/zoneinfo/zone.tab). Sie listet nur etwas über 400 Zeitzonen auf (414 auf meinem System). Es fehlt einvielvon Zeitzonen. Die Frage ist also, warum? Warum sind sie nicht alle dort drin? Und da sie nicht alle dort drin sind, wie wird entschieden, welche dort drin sind?
zone.tab enthält einen Ländercode sowie Längen- und Breitengrad für jede aufgeführte Zeitzone (was vermutlich der Grund für die Existenz der Datei ist) und nichtalleZeitzonen haben diese wirklich (z. B. UTC hat diese nicht, und es ist nicht in zone.tab), also klar, nichtjedenZeitzonen können in zone.tab aufgelistet werden. Aber warum sind nicht alle, die einer tatsächlichen Stadt oder Region entsprechen (wie die meisten), in der Datei aufgeführt? Warum nur 414 statt der über 1000, die tatsächlich verfügbar sind?
Antwort1
Ein Thread mit dem TitelEin erneuter Appell für die Aufnahme von zone.tabbietet einige Erklärungen, wofür es zone.tab
verwendet wird.
Sein Hauptzweck scheint darin zu bestehen, eine Karte mit Städten und ihren Standorten anzuzeigen, sodass ein Benutzer seine Zeitzone auswählen kann, indem er auf eine Stadt in der Nähe klickt.
In diesem Sinne muss es nicht alle Aliase für jede Stadt kennen, es reicht aus, eine bevorzugte Bezeichnung zu kennen. (Aber es sieht so aus, als ob es immer mindestens eine Stadt in jedem Land enthält.)
Die anderen Aliase für jede Zone werden gespeichert intzdataQuellcode.
backward
Die Datei hat beispielsweise
Link Asia/Kolkata Asia/Calcutta
damit die Leute die neue oder die alte Schreibweise verwenden können.
Alle anderen Dateien /usr/share/zoneinfo
werden aus diesem Quellcode mithilfe von generiert zic
.
Es gibt aber nicht mehr als 600 Aliase. Warum also der große Unterschied?
Normalerweise werden drei Versionen jeder Zeitzone generiert: posix
, right
und die Standardversion 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
Dertzcode Makefile
zeigt, wie diese generiert werden, und nennt den Grund dafür: posix
Schaltsekunden werden ignoriert und right
eingeschlossen.
Siehe auch:
Antwort2
Über den folgenden Linkhttp://en.wikipedia.org/wiki/Tz_database
Die Zeitzonendatenbank wird jetzt von der Internet Assigned Numbers Authority verwaltet.