TZFILE(5) | Linux-Programmierhandbuch | TZFILE(5) |
tzfile - Zeitzonen-Informationen
Die von tzset(3) verwandten Zeitzoneninformationsdateien werden typischerweise unter einem Verzeichnis mit Namen der Art /usr/share/zoneinfo gefunden. Diese Dateien fangen mit einem 44-Byte-Vorspann an, der die folgenden Felder enthält:
Der vorgenannte Vorspann wird von den folgenden Feldern, deren Länge abhängig von den Inhalten des Vorspanns ist, gefolgt:
struct ttinfo {
int32_t tt_gmtoff;
unsigned char tt_isdst;
unsigned char tt_abbrind; };
Jede Struktur besteht aus einem vorzeichenbehafteten 4-Byte-Ganzzahlwert für tt_gmtoff vom Typ long, geschrieben in einer Standard-Bytefolge, gefolgt von den 1-Byte-Werten für tt_isdst und für tt_abbrind. In jeder Struktur legt tt_gmtoff die Anzahl Sekunden fest, die zu UT addiert werden, tt_isdst bestimmt, ob tm_isdst von localtime(3) gesetzt werden soll und tt_abbrind entspricht dem Index im Feld der Abkürzungsbytes für Zeitzonen, die den ttinfo-Strukturen in der Datei folgen.
Die Funktion localtime(3) verwendet den ersten ttinfo-Eintrag für Standardzeit in der Datei (oder einfach den ersten ttinfo-Eintrag, wenn kein Standardzeit-Eintrag existiert), wenn entweder tzh_timecnt Null ist oder das Zeit-Argument kleiner ist als der erste in der Datei abgelegte Übergangszeitpunkt.
Diese Handbuchseite beschreibt <tzfile.h> aus dem Glibc-Quelltext (siehe timezone/tzfile.h).
Es scheint, dass timezone tzfile intern verwendet, aber Glibc das nicht in der Anwendungsebene verfügbar macht. Der Grund ist höchstwahrscheinlich, dass die standardisierten Funktionen sinnvoller, besser portierbar und tatsächlich von Glibc dokumentiert sind. Vermutlich ist es nur in Glibc enthalten, um die nicht von Glibc (sondern einer anderen Organisation) gepflegten Zeitzonendaten zu unterstützen.
Für Zeitzonen-Dateien im Version-2-Format folgen dem oben Beschriebenen (Vorspann und Daten) ein zweiter Vorspann und Daten in einem ähnlichen Format. Der Unterschied besteht darin, dass die Übergangszeiten und Schaltsekundenzeiten jeweils mit jeweils acht Byte kodiert werden (Schaltsekundenzahlen bleiben vier Bytes). Nach dem zweiten Header und den Daten folgt eine durch Zeilenumbrüche abgetrennte Zeichenkette im Stil von POSIX-Zeitzonen-Umgebungsvariablen. Sie ist für die Behandlung der Momente nach der letzten in der Datei gespeicherten Übergangszeit bestimmt. (Wenn es keine POSIX-Darstellung für solche Momente gibt, ist die Zeichenkette leer.) Die POSIX-artige Zeichenkette muss mit dem lokalen Zeittyp nach den letzten Übergangszeiten beider Daten übereinstimmen. Falls die letzte Übergangszeit bei der beispielhaften Zeichenkette “WET0WEST,M3.5.0,M10.5.0/3” im Juli gewesen ist, dann muss der lokale Übergangszeittyp die Sommerzeit festlegen, die mit “WEST” abgekürzt ist, d.h. eine Stunde östlich von UTC.
Für Version-3-Format Zeitzonendateien darf die POSIX-TZ-artige Zeichenkette zwei kleinere Erweiterungen gegenüber dem POSIX-TZ-Format verwenden, wie diese in newtzset(3) beschrieben sind. Zuerst darf der Stundenanteil seiner Übergangszeiten vorzeichenbehaftet und im Bereich von -167 bis 167 sein, statt wie von POSIX verlangt vorzeichenlos im Bereich 0 bis 24. Zweitens ist die Sommerzeit das ganze Jahr über effektiv, falls sie am 1. Januar um 00:00 anfängt und am 31. Dezember um 24:00 endet, plus dem Unterschied zwischen der Sommerzeit und der Standardzeit.
In zukünftigen Änderungen des Formats können weitere Daten angehängt werden.
time(2), localtime(3), tzset(3), tzselect(8), zdump(8), zic(8)
Diese Seite ist Teil der Veröffentlichung 4.16 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> und Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.
4. August 2017 |