table of contents
- stretch 1.22-1
- testing 2.12-1
- stretch-backports 2.11-1~bpo9+2
- unstable 2.12-1
TZFILE(5) | Linux-Programmierhandbuch | TZFILE(5) |
BEZEICHNUNG¶
tzfile - Zeitzonen-InformationenBESCHREIBUNG¶
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 er 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, jede 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. 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 (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¶
Vier-Byte-Werteabschnitt (Header Version 0x00 oder 0x32) Headereintrag Vier-Byte Übergangszeiten Index der Übergangszeiten ttinfo-Strukturen Feld für Zeitzonen-Abkürzungen Schaltsekundeneinträge Feld für Standard/Echtzeit Feld für UTC/Ortszeit Acht-Byte-Werteabschnitt (nur wenn im ersten Header die Version 0x32 steht, ist auch im zweiten Header die Version 0x32) Headereintrag Acht-Byte Übergangszeiten Index der Übergangszeiten ttinfo-Strukturen Feld für Zeitzonen-Abkürzungen Schaltsekundeneinträge Feld für Standard/Echtzeit Feld für UTC/Ortszeit Dritter Abschnitt (optional, nur in Version 0x32 Dateien) Zeilenumbruchzeichen Zeitzonenzeichenkette Zeilenumbruchzeichen
SIEHE AUCH¶
ctime(3), tzset(3), tzselect(8),timezone/tzfile.h in dem Glibc-Quellcode.
KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 4.09 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>.
7. Mai 2015 |