TZSET(3)

BEZEICHNUNG
tzset, tzname, timezone, daylight - initialisiere Zeitzonen-Daten

ÜBERSICHT
#include <time.h>

void tzset (void);

extern char *tzname[2]; /* Zeitzonenname */
extern long timezone; /* Sommerzeit Indikator */
extern int daylight; /* Abstand zu UTC */

BESCHREIBUNG
Die Funktion tzset(3) initialisiert tzname[] , daylight und timezone abhängig von der Umgebungsvariable TZ. Diese Funktion wird von anderen Zeitroutinen benutzt die Informationen zur Zeitzone benötigen. Sollte die TZ Varibale nicht gesetzt sein, wird tzname[] mit best möglicher Näherung aus der lokal "Wall Clock"-Zeit gesetzt. An dieser Stelle wird oft auf zurückgegriffen. Das File ist normalerweise ein Link auf das korrekte Zeitzonen File. Sollte die TZ Variable gesetzt sein aber der Wert ist Null oder der Wert hat ein Format (siehe unten), welches nicht interpretiert werden kann, so wird "Coordinated Universal Time" (UTC) benutzt. Das Programm kennt drei verschiede Formate für TZ. Das erste Format wird benutzt wenn in der Zeitzone keine Sommerzeit vorgesehen ist.

TZ = STD(+|-)Offset

Der String STD definiert den Namen der Zeitzone. Er besteht auf wenigstens drei Buchstaben. Der Offset-String folgt unmittelbar und spezifiziert den Abstand zwischen der örtlichen Zeit und UTC (Also: localtime=UTC-Offset und Achtung Vorzeichenwechsel). Der Offset ist positiv für Zeitzonen westlich Greenwich. Er kann als HH.MM.SS angegeben werden. Die Stunde muss zwischen 0 und 24 liegen, die Minuten zwischen 0 und 59, die Sekunden ebenfalls. (Nicht alle Systeme machen das so: AIX kenn auch HH >> 24 )

Das Zweite Format ermöglicht es die Sommerzeit mit zu definieren.

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

Es sind keine Leerzeichen zwischen den Elementen vorgesehen. STD und Offset definert wie Oben. DST und Offset bezeichen den Namen und Offset der Sommerzeit. Ist der Offset weggelassen wird angenommen, daß die Sommerzeit eine Stunde in der Zukunft liegt. Das START definiert den Beginn der Sommerzeit. END bezeichnet das zurückschalten in Normalzeit. Die Felder können das folgende Format haben:

Jn
            Dieses definiert einen Julianischen Tag n (1 <= n <= 365).
        Der 29. Februar wir niemals gezaehlt, auch nicht in Schaltjahren.

Mm.w.d
    Das definiert
       - den Tag d (0 <=d <=6) 0 ist ein Sonntag,
       - der Woche w (1<=w<=5) in welcher der Tag d liegt
       - des Monats m (1<=m<=12).

TIME
     Das definiert den Zeitpunt an dem Umgeschaltet wird. Wenn hier
     nicht anders definert gilt die Voreinstellung 02:00:00.

Das dritte Format besagt, daß die Zeitzonen Information aus einem File gelesen werden soll.

:[file]

    Wird hier kein File angegeben, so wird das File "localtime" im Verzeichnis für die Zeitzonenfiles gelesen. Die Zeitzonenfile finden sich im Verzeichnis /usr/share/zoneinfo. Das Fileformat ist in tzfile(5) dokumentiert. Sollte [file] aber mit einem '/' beginnen so wird nicht in /usr/share/zoneinfo gesucht. Mit der Glibc kann auf den Doppelpunkt verzichtet werden.

FILES
Wo die Daten für die Zeitzonen gesucht werden, sind von der (g)libc Version abhängig. Libc4/5 benutzen /usr/lib/zoneinfo, seit libc-5.4.6 befinden sie sich in Seit Glibc2 gilt: wenn die Variable TZDIR existiert, wird sie als Basisverzeichnis benutzt. Das Verzeichnis beinhaltet normalerweise folgende Files:

localtime
     - lokale Zeitzonendaten

posixrules
     - Regeln für TZ nach POSIX Zu dem sollte /etc/localtime
     ein Link auf localtime oder das korrekte Zonenfile sein.

CONFORMING TO
SVID3, POSIX, BSD4.3

SEE ALSO
date(1), gettimeofday(2), time(2), ctime(3), getenv(3), tzfile(5).