Scroll to navigation

TZFILE(5) Linux-Programmierhandbuch TZFILE(5)

BEZEICHNUNG

tzfile - Zeitzonen-Informationen

BESCHREIBUNG

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:
  • Die magische Vierbyte-ASCII-Sequenz “TZif” identifiziert die Datei als Zeitzoneninformationsdatei.
  • Ein Zeichen identifiziert die Version des Dateiformats (Stand 2017 entweder ein ASCII NUL oder “2”, oder “3”).
  • Fünfzehn Bytes, die Nullen enthalten, sind für zukünftige Nutzung reserviert.
  • Sechs Vierbyte-Ganzzahlwerte, geschrieben in einer Standard-Byte-Reihenfolge (das »high-order«-Byte des Wertes ist zuerst geschrieben). Diese Werte sind, in Reihenfolge:
tzh_ttisgmtcnt
Anzahl der in der Datei hinterlegten UT-/Lokal-Kennziffern
tzh_ttisstdcnt
Anzahl der in der Datei gespeicherten Standard-/Wall-Kennziffern
tzh_leapcnt
Anzahl der Schaltsekunden, für die Einträge in der Datei gespeichert sind
tzh_timecnt
Anzahl der Übergangszeiten, für die Einträge in der Datei gespeichert sind
tzh_typecnt
Anzahl der lokalen Zeit-Typen, für die Einträge in der Datei gespeichert sind (dürfen nicht Null sein)
tzh_charcnt
Anzahl der Bytes für in der Datei gespeicherte Zeitzonen-Abkürzungen

Der vorgenannte Vorspann wird von den folgenden Feldern, deren Länge abhängig von den Inhalten des Vorspanns ist, gefolgt:

  • tzh_timecnt: In absteigender Reihenfolge sortierte vorzeichenbehaftete Vierbyte-Ganzzahlwerte. Diese Werte werden in Standard-Byte-Reihenfolge geschrieben. Jeder wird als Übergangszeit (wie von time(2) zurückgeliefert) verwandt, zu der sich die Regeln zur Berechnung der lokalen Zeit ändern.
  • tzh_timecnt: Einbyte-Ganzzahlwerte. Jeder teilt mit, welche der verschiedenen in der Datei beschriebenen Arten lokaler Zeittypen mit welcher Zeitperiode, die mit der identisch indizierten Übergangszeit beginnt, zugeordnet ist. Diese Werte dienen als Index für das nächste Feld.
  • tzh_typecnt: ttinfo-Einträge, jeder wie folgt definiert:


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.

  • tzh_leapcnt-Paare von 4-Byte-Werten, geschrieben in Standard-Bytefolge. Der erste Wert jedes Paares bezeichnet den nicht negativen Zeitpunkt (Rückgabewert von time(2)), zu dem die Schaltsekunden auftreten. Der zweite bestimmt die gesamte Anzahl der Schaltsekunden, die während der Zeitperiode, die zu dem angegebenen Zeitpunkt beginnt, eingelegt werden sollen. Die Wertepaare sind in aufsteigender Folge nach der Zeit sortiert. Jeder Übergang ist für eine Schaltsekunde, entweder positiv oder negativ. Übergänge sind immer durch mindestens 28 Tage minus einer Sekunde getrennt.
  • tzh_ttisstdcnt Standard-/Wall-Kennziffern, jede wird als 1-Byte-Wert gespeichert. Sie geben an, ob die Übergangszeiten, die den lokalen Zeit-Typen zugeordnet sind, als Standard-Zeit oder als »wall clock time« angegeben wurden. Sie werden verwendet, wenn eine Zonendatei für die Verarbeitung POSIX-artiger Zeitzonen-Umgebungsvariablen eingesetzt wird.
  • tzh_ttisgmtcnt UT-/Lokal-Kennziffern, jede als 1-Byte-Wert gespeichert. Sie besagen, ob die den lokalen Zeit-Typen zugeordneten Übergangszeiten als UT oder als lokale Zeit angegeben wurden. Sie werden verwendet, wenn eine Zonendatei für die Verarbeitung POSIX-artiger Zeitzonen-Umgebungsvariablen eingesetzt wird.

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.

ANMERKUNGEN

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.

Version-2-Format

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.

Version-3-Format

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.

SIEHE AUCH

time(2), localtime(3), tzset(3), tzselect(8), zdump(8), zic(8)

KOLOPHON

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/.

ÜBERSETZUNG

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