BESCHREIBUNG
Diese Seite beschreibt die Struktur der Zeitzonen-Dateien, die von tzset(3) verwandt werden. Diese Dateien können typischerweise in /usr/lib/zoneinfo oder /usr/share/zoneinfo gefunden werden.Zeitzoneninformationsdateien beginnen mit einem 44-Byte-Kopf, der wie folgt strukturiert ist:
- *
- Die magische Vier-Byte-Sequenz »TZif« identifiziert dies als Zeitzoneninformationsdatei.
- *
- Ein einzelnes Zeichen identifiziert die Version des Dateiformats: entweder ein ASCII NUL ('\0') oder ein '2' (0x32).
- *
- Fünfzehn Bytes, die Nullen enthalten, sind für zukünftige Nutzung reserviert.
- *
-
Sechs Vierbytewerte des Typs long, 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 UTC-/Lokal-Kennziffern
- tzh_ttisstdcnt
- Anzahl der in der Datei gespeicherten Standard-/Wall-Kennziffern
- tzh_leapcnt
- Anzahl der Schaltsekunden, für die Angaben in der Datei gespeichert sind
- tzh_timecnt
- Anzahl der »Übergangszeiten« (transition times), für die Angaben in der Datei gespeichert sind
- tzh_typecnt
- Anzahl der »lokalen Zeit-Typen«, für die Informationen in der Datei gespeichert sind (darf nicht Null sein)
- tzh_charcnt
- Anzahl der Zeichen für in der Datei gespeicherte Zeitzonen-Abkürzungen (timezone abbreviation strings)
-
Nach diesem Header folgen tzh_timecnt 4-Byte-Werte vom Typ long, nach steigender Wertigkeit sortiert. Auch sie werden in der Standard-Byteordnung geschrieben. Jeder Wert wird als Zeitpunkt (wie sie von time(2) zurückgegeben wird) verwendet, zu dem sich die Regeln für die Berechnung der lokalen Zeit ändern. Darauf folgen tzh_timecnt Werte vom Typ unsigned char. Jeder dieser Werte besagt, welcher der verschiedenen, in der Datei beschriebenen lokalen Zeit-Typen, mit dem Wechsel der Zeitberechnung mit dem gleichen Index verknüpft ist. Die Werte dienen als Indizes für ein Feld von ttinfo-Strukturen (mit tzh_typecnt Einträgen). Diese Strukturen sind wie folgt definiert:
struct ttinfo { long tt_gmtoff; int tt_isdst; unsigned int tt_abbrind; };
Jede Struktur besteht aus einem 4-Byte-Wert 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 UTC addiert werden, tt_isdst bestimmt, ob tm_isdst von localtime(3) gesetzt werden soll und tt_abbrind entspricht dem Index im Feld der Abkürzungszeichen für Zeitzonen, die den ttinfo-Strukturen in der Datei folgen.
Als Nächstes gibt es tzh_leapcnt Paare von 4-Byte-Werten, geschrieben in Standard-Bytefolge. Der erste Wert jedes Paares bezeichnet den Zeitpunkt (Rückgabewert von time(2)), zu dem die Schaltsekunden auftreten. Der zweite bestimmt die gesamte Anzahl der Schaltsekunden, die nach der angegebenen Zeit eingelegt werden sollen. Die Wertepaare sind in aufsteigender Folge nach der Zeit sortiert.
Nun folgen 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.
Schließlich gibt es tzh_ttisgmtcnt UTC-/Lokal-Kennziffern, jeder als 1-Byte-Wert gespeichert. Sie besagen, ob die den lokalen Zeit-Typen zugeordneten Übergangszeiten als UTC oder als lokale Zeit angegeben wurden. Sie werden verwendet, wenn eine Zonendatei für die Verarbeitung POSIX-artiger Zeitzonen-Umgebungsvariablen eingesetzt wird.
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. Das ist sehr wahrscheinlich, weil die standardisierten Funktionen sinnvoller, besser portierbar und tatsächlich von Glibc dokumentiert sind. Es ist vielleicht nur in Glibc enthalten, nur 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 (und dass das Versionsbyte in dem Vorspann-Datensatz 0x32 statt 0x00 ist). 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.)Der zweite Abschnitt der Zeitzonendatei besteht aus einem weiteren 44-Byte-Kopfdatensatz, der in der Struktur zu dem am Anfang der Datei identisch ist, außer das er auf die folgenden Daten angewandt wird, die ebenfalls in der Struktur dem ersten Abschnitt der Zeitzonendatei entsprechen, mit den folgenden Unterschieden:
- *
- Die Übergangszeitwerte, nach dem Kopf, sind Achtbytewerte.
- *
- In jedem Schaltsekundendatensatz ist der Schaltsekundenwert ein Achtbytewert. Die aufgesammelte Schaltsekundenanzahl ist noch ein Vierbytewert.
In allen Fällen werden die Achtbytezeitwerte in der »standard«-Bytereihenfolge angegeben, das »high-order« Byte zuerst.
POSIX-Zeitzonenzeichenkette
Der zweite Achtbytezeitwerteabschnitt wird von einem optionalen dritten Abschnitt gefolgt: einem einzelnen ASCII-Zeilenumbruchzeichen ('\n'), dann einer Textzeichenkette, gefolgt von einem zweiten Zeilenumbruchzeichen. Die Textzeichenkette ist eine POSIX-Zeitzonenzeichenkette, dessen Format in der Handbuchseite tzset(3) beschrieben ist.Die POSIX-Zeitzonenzeichenkette beschreibt eine Regel zur Berechnung der Übergangszeiten, die der letzten Übergangszeit folgen, die in der Zeitzoneninformationsdatei explizit angegeben ist.
Zusammenfassung des Zeitzoneninformationsdateiformats
-
Four-byte value section (header version 0x00 or 0x32) Header record Four-byte transition times Transition time index ttinfo structures Timezone abbreviation array Leap second records Standard/Wall array UTC/Local array Eight-byte value section (only if first header version is 0x32, the second header's version is also 0x32) Header record Eight-byte transition times Transition time index ttinfo structures Timezone abbreviation array Leap second records Standard/Wall array UTC/Local array Third section (optional, only in 0x32 version files) Newline character Timezone string Newline character
KOLOPHON
Diese Seite ist Teil der Veröffentlichung 4.06 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 <[email protected]> und Helge Kreutzmann <[email protected]> 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 <[email protected]>.