Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ctime(3C) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

time(2)

cftime(3C)

clock(3C)

getenv(3C)

mktime(3C)

putenv(3C)

setlocale(3C)

strftime(3C)

printf(3S)

profile(4)

timezone(4)

environ(5)

ctime(3C)                                                         ctime(3C)

NAME
     ctime, localtime, gmtime, asctime, timezone, altzone, daylight,
     tzname, tzset - Datum und Zeit in Zeichenkette umwandeln

SYNTAX
     #include <time.h>

     char *ctime(const timet *clock);

     struct tm *localtime(const timet *clock);

     struct tm *gmtime(const timet *clock);

     char *asctime(const struct tm *timeptr);

     extern long int timezone, altzone;

     extern int daylight;

     extern char *tzname[2];

     void tzset(void);

BESCHREIBUNG
     ctime(), localtime() und gmtime() akzeptieren Argumente vom Typ
     timet, auf die clock zeigt, und die die Zeit seit 00:00:00 UTC (Coor-
     dinated Universal Time), 1. Januar 1970 (in Sekunden) liefern. ctime()
     liefert einen Zeiger auf eine 26 Zeichen lange Zeichenkette in folgen-
     der Form: Zeitzonen- und Sommerzeitkorrekturen werden durchgeführt,
     bevor die Zeichenkette generiert wird. Alle Felder haben eine kon-
     stante Länge:

          Fri Sep 13 00:00:00 1986\n\0

     ctime() entspricht:

          asctime(localtime(clock))

     localtime() (Ortszeit) und gmtime() geben Zeiger auf tm-Strukturen
     zurück, die nachstehend erläutert werden. localtime() berücksichtigt
     Zeitzonen und eventuelle Sommerzeitkorrekturen; gmtime() wandelt
     direkt in die UTC um, d. h. die vom UNIX System benutzte Zeit.

     asctime() wandelt eine tm-Struktur in eine Zeichenkette aus 26 Zeichen
     um, wie in obigem Beispiel gezeigt, und gibt einen Zeiger auf die Zei-
     chenkette zurück, wobei die Entsprechung des folgenden Algorithmus
     verwendet wird:








Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

ctime(3C)                                                         ctime(3C)

     char *asctime(const struct tm *timeptr)
     {
           static char wdayname[7][3] = {
                   "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
           };
           static char monname[12][3] = {
                   "Jan", "Feb", "Mar", "Apr", "May", "Jun",
                   "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
           };
           static char result[26];

           sprintf(result, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
                   wdayname[timeptr->tmwday],
                   monname[timeptr->tmmon],
                   timeptr->tmmday, timeptr->tmhour,
                   timeptr->tmmin, timeptr->tmsec,
                   1900 + timeptr->tmyear);
           return result;
     }

     In der Include-Datei time.h sind die Vereinbarungen aller Funktionen
     und externer Werte sowie der tm-Struktur enthalten. Die Strukturver-
     einbarung ist wie folgt:

     struct      tm {
         int     tmsec;         /* Sekunden - [0, 61] für übersprungene
                                    Sekunden */
         int     tmmin;         /* Minuten - [0, 59] */
         int     tmhour;        /* Stunden - [0, 23] */
         int     tmmday;        /* Tag des Monats - [1, 31] */
         int     tmmon;         /* Monate - [0, 11] */
         int     tmyear;        /* Jahre seit 1900 */
         int     tmwday;        /* Tage seit Sonntag - [0, 6] */
         int     tmyday;        /* Tage seit dem 1. Januar - [0, 365] */
         int     tmisdst;       /* Option für Sommerzeit */
     };

     tmisdst ist positiv, wenn Sommerzeit eingestellt ist, null, wenn Som-
     merzeit nicht eingestellt ist, und negativ, wenn die Information nicht
     verfügbar ist.

     Die externe Variable altzone beinhaltet den Unterschied in Sekunden
     zwischen UTC und der alternativen Zeitzone. Die externe Variable
     timezone enthält den Unterschied in Sekunden zwischen UTC und der ört-
     lichen Zeit. Die externe Variable daylight zeigt an, ob die Sommerzeit
     angezeigt werden soll. timezone und altzone sind standardmäßig 0
     (UTC). Die externe Variable daylight ist ungleich null, wenn eine
     alternative Zeitzone existiert. Die Zeitzonennamen sind in der exter-
     nen Variable tzname, enthalten, die standardmäßig auf

          char *tzname[2] = { "GMT", " " };



Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

ctime(3C)                                                         ctime(3C)

     gesetzt wird. Diese Funktionen wissen über die Eigenarten dieser Kon-
     vertierungen für verschiedene Zeitperioden in den Vereinigten Staaten
     (insbesondere in den Jahren 1974, 1975, und 1987) Bescheid. Sie behan-
     deln die neue Sommerzeit, beginnend mit dem ersten Sonntag im April
     1987.

     tzset() benutzt den Inhalt der Umgebungsvariablen TZ, um die Werte
     unterschiedlicher externer Variablen zu überschreiben. Die Funktion
     tzset() wird von asctime() oder aber auch vom Benutzer aufgerufen. In
     der Beschreibung von environ(5) finden Sie nähere Angaben zu der Umge-
     bungsvariablen TZ.

     tzset() überprüft den Inhalt der Umgebungsvariablen und weist die ver-
     schiedenen Felder den entsprechenden Variablen zu. Zum Beispiel lautet
     der vollständigste Eintrag für New Jersey 1986:

          EST5EDT4,116/2:00:00,298/2:00:00

     oder einfach nur

          EST5EDT

     Ein Beispiel für die Südhalbkugel, zum Beispiel Cook Islands, könnte
     sein:

          KDT9:30KST10:00,63/5:00,302/20:00

     In der langen Version des New Jersey-Beispiels von TZ ist tzname[0]
     EST, timezone wird auf 5*60*60 gesetzt, tzname[1] ist EDT, altzone
     wird auf 4*60*60 gesetzt, die Sommerzeit beginnt am 117. Tag um 2 Uhr
     nachts und endet am 299. Tag um 2 Uhr nachts (es wird der Julianische
     Kalender benutzt). daylight wird auf einen positiven Wert gesetzt.
     Start- und Endzeit sind relativ zur Sommerzeit. Wenn Start- und Endda-
     tum der Sommerzeit nicht geliefert werden, werden die für die Verei-
     nigten Staaten in diesem Jahr gültigen Tage benutzt, und die Zeit wird
     2 Uhr nachts sein. Wenn nur die Zeit nicht verfügbar ist, wird diese
     auf 2 Uhr nachts gesetzt.

     Die Auswirkungen von tzset() sind so, daß die Werte der externen
     Variablen timezone, altzone, daylight, und tzname geändert werden.
     ctime(), localtime(), mktime(), und strftime() werden ebenso diese
     externen Variablen aktualisieren, als hätten sie tzset() zu der Zeit
     aufgerufen, die vom timet- oder dem von ihnen konvertierten struct
     tm-Wert spezifiziert wird.

     Beachten Sie, daß in den meisten Installationen TZ standardmäßig durch
     die /etc/profile-Datei auf den korrekten Wert gesetzt wird, wenn der
     Benutzer sich einloggt [siehe profile(3C) und timezone(4)].






Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

ctime(3C)                                                         ctime(3C)

RÜCKGABEWERT
     Die Funktionen asctime(), ctime(), gmtime() und localtime() geben
     Werte in einem von zwei statischen Objekten zurück: einer unterteilten
     Zeitstruktur und einem char-Array. Die Ausführung einer dieser Funk-
     tionen kann die Informationen überschreiben, die in einem der Objekte
     durch eine andere Funktion zurückgegeben wurde.

     Bei erfolgreicher Ausführung gibt die Funktion asctime() einen Zeiger
     auf die Zeichenkette zurück.

     Die Funktion gmtime() gibt einen Zeiger auf eine tm-Struktur zurück.

HINWEISE
     Die Ergebniswerte für ctime(), localtime() und gmtime() zeigen auf
     statische Daten, die bei jedem Aufruf überschrieben werden.

     Das Ändern der Zeit während des Zeitraums der Änderung von timezone
     nach altzone oder umgekehrt kann unvorhersehbare Ergebnisse hervorru-
     fen. Der Systemverwalter muß das Start- und Enddatum der Sommerzeit
     jährlich ändern, wenn das Format des Julianischen Kalenders verwendet
     wird. gmtime() und localtime() unterstützen nicht die lokalen Datums-
     und Zeitformate. Um maximale Portabilität zu erreichen, sollten Sie
     strftime(3C) verwenden.

DATEIEN
     /usr/lib/locale/locale/LCTIME
          enthält umgebungsspezifische Datums- und Zeitinformationen

SIEHE AUCH
     time(2), cftime(3C), clock(3C), getenv(3C), mktime(3C), putenv(3C),
     setlocale(3C), strftime(3C), printf(3S), profile(4), timezone(4),
     environ(5).






















Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026