TZSET(3)

BEZEICHNUNG
tzset, tzname, timezone, daylight - initialisiert Informationen zur Zeitumstellung (Sommer-/Winterzeit)

ÜBERSICHT
#include <time.h>

void tzset (void);

extern char *tzname[2];
extern long timezone;
extern int daylight;

Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

tzset(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
tzname: _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
timezone: _SVID_SOURCE || _XOPEN_SOURCE
daylight: _SVID_SOURCE || _XOPEN_SOURCE

BESCHREIBUNG
Die Funktion tzset() initialisiert die Variable tzname abhängig von der Umgebungsvariable TZ. Diese Funktion wird automatisch von den anderen Funktionen aufgerufen, die Zeiten in Abhängigkeit von der Zeitzone umrechnen. In einer System-V-artigen Umgebung werden auch die folgenden Variablen gesetzt: timezone (Sekunden westlich von UTC) sowie daylight (0, falls diese Zeitzone keine Sommerzeit hat oder ungleich 0, falls es eine Zeit des Jahres gibt, in der die Sommerzeit gilt).

Sollte die Umgebungsvariable TZ nicht gesetzt sein, wird tzname mit bestmöglicher Näherung aus der lokalen Zeit der »Wanduhr« (local wall clock time) initialisiert. Dabei wird auf die Datei localtime im systemweiten Zeitzonenverzeichnis (siehe unten) zurückgegriffen, dessen Format in tzfile(5) beschrieben wird. (Man sieht häufig an dieser Stelle auch /etc/localtime, einen symbolischen Link zur richtigen Datei im Zeitzonenverzeichnis.)

Falls die Umgebungsvariable TZ gesetzt ist, jedoch ihr Wert »leer« ist oder das Format (siehe unten) des Wertes nicht interpretiert werden kann, so wird die »Coordinated Universal Time« (UTC) benutzt.

Der Wert von TZ kann in einem von drei Formaten vorliegen. Das erste Format wird benutzt, wenn in der lokalen Zeitzone keine Sommerzeit vorgesehen ist:

    std offset

Die Zeichenkette std definiert den Namen der Zeitzone. Er besteht aus wenigstens drei Buchstaben. Die Zeichenkette offset folgt unmittelbar und beschreibt den Wert, der hinzu addiert werden muss, um Coordinated Universal Time (UTC) zu erhalten. Der offset ist positiv für Zeitzonen westlich des Nullmeridians (Greenwich) und negativ für Zeitzonen östlich davon. Die Stunde muss zwischen 0 und 24 liegen, die Minuten zwischen 0 und 59, die Sekunden ebenfalls.

Das zweite Format wird benutzt, wenn es eine Sommerzeit gibt:

    std offset dst [offset],start[/time],end[/time]

Die Spezifikation sieht keine Leerzeichen zwischen den Elementen vor. Die am Anfang stehenden std und offset spezifizieren wie oben beschrieben die Zeitzone. Die Zeichenketten dst und offset bezeichnen den Namen und den Offset der zugehörigen Sommerzeit. Falls der Offset weggelassen wird, wird die Sommerzeit als eine Stunde vor der Standardzeit angenommen.

Das Feld start definiert den Beginn der Sommerzeit und end bezeichnet das Zurückschalten zur Normalzeit. Diese Felder können die folgenden Formate haben:

Jn  Dies definiert den Julianischen Tag, wobei n zwischen 1 und 365 liegt. Schalttage werden nicht gezählt. Der 29. Februar kann nicht dargestellt werden; der 28. Februar ist Tag 59, der 1. März ist immer Tag 60.

n   Dies definiert einen null-basierten Julianischen Tag, wobei n zwischen 0 und 365 liegt. Der 29. Februar wird in Schaltjahren gezählt.

Mm.w.d
    Dies beschreibt Tag d (0 <= d <= 6) in Woche w (1 <= w <= 5) von m (1 <= m <= 12). Woche 1 ist die erste Woche, in der Tag d vorkommt und Woche 5 ist die letzte Woche, in der Tag d vorkommt. Tag 0 ist ein Sonntag.

Die time-Felder beschreiben in der gerade gültigen lokalen Zeit den Zeitpunkt, an dem der Wechsel zur anderen Zeit stattfindet. Ohne Angabe eines Wertes gilt die Voreinstellung 02:00:00. Hier ist ein Beispiel für Neuseeland, wo die Standardzeit (NZST) 12 Stunden früher als UTC und die Sommerzeit (NZDT) 13 Stunden früher als UTC ist. Die Sommerzeit gilt vom ersten Sonntag im Oktober bis zum dritten Sonntag im März und die Wechsel finden zur voreingestellten Zeit von 02:00:00 Uhr statt:
    TZ="NZST-12:00:00NZDT-13:00:00,M10.1.0,M3.3.0"

Das dritte Format gibt an, dass die Zeitzoneninformationen aus einer Datei gelesen werden sollen:

    :[filespec]

Wird hier keine Datei angegeben, so wird die Datei localtime im Zeitzonenverzeichnis gelesen. Die Zeitzonendateien finden sich im Verzeichnis /usr/share/zoneinfo. Das Dateiformat ist in tzfile(5) dokumentiert. Mit filespec wird eine andere Datei im tzfile(5)-Format angegeben, aus der die Zeitzoneninformationen gelesen werden sollen. Sollte filespec nicht mit einem a '/' beginnen, so wird der Pfad relativ zum Zeitzonenverzeichnis angenommen.

Hier ist ein Beispiel, wiederum für Neuseeland:
    TZ=":Pacific/Auckland"

DATEIEN
Wo die Daten für die Zeitzonen gesucht werden, ist von der Version der (G)Libc abhängig. Libc4 und Libc5 verwenden /usr/lib/zoneinfo und wird seit libc-5.4.6 /usr/share/zoneinfo ausprobieren, wenn das fehlschlägt. Seit Glibc2 gilt: wenn die Variable TZDIR existiert, wird sie als Basisverzeichnis benutzt. Die Voreinstellung hängt von der Installation ab, ist jedoch meistens /usr/share/zoneinfo.

Dieses Zeitzonenverzeichnis enthält die Dateien
localtime      lokale Zeitzonendatei
posixrules     Regeln für TZ nach POSIX

Häufig ist /etc/localtime ein symbolischer Link auf die Datei localtime oder auf die korrekte Zeitzonendatei im systemweiten Zeitzonenverzeichnis.

KONFORM ZU
SVr4, POSIX.1-2001, 4.3BSD.

ANMERKUNGEN
Beachten Sie bitte, dass die Variable daylight nicht bedeutet, dass im Moment Sommerzeit herrscht. Sie beschrieb früher die Nummer eines Algorithmus (siehe die Variable tz_dsttime in gettimeofday(2)). Sie ist seit vielen Jahren obsolet, wird jedoch von SUSv2 vorausgesetzt.

BSD4.3 beinhaltete eine Routine char *timezone(zone, dst), die den Namen der Zeitzone zurückgab, der dem ersten Argument (Minuten westlich von UTC) entsprach. Wenn das zweite Argument 0 war, wurde der Standardname verwendet, ansonsten die Sommerzeit-Version.

SIEHE AUCH
date(1), gettimeofday(2), time(2), ctime(3), getenv(3), tzfile(5)

KOLOPHON
This page is part of release 3.70 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Walter Harms <walter.harms@informatik.uni-oldenburg.de>, Tobias Quathamer <toddy@debian.org> und Martin Eberhard Schauer <Martin.E.Schauer@gmx.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>.