Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ mktime(3C) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ctime(3C)

getenv(3C)

timezone(4)

mktime(3C)                                                       mktime(3C)

NAME
     mktime - tm-Struktur in Kalenderzeit umwandeln

SYNTAX
     #include <time.h>

     timet mktime(struct tm *timeptr);

BESCHREIBUNG
     mktime() wandelt die Zeit, die durch die tm-Struktur dargestellt wird
     und auf die timeptr zeigt, in die Kalenderzeit um (die Anzahl der
     Sekunden seit 00:00:00 UTC, 1. Januar, 1970).

     Die tm-Struktur hat das folgende Format:

        struct        tm {
            int     tmsec;         /* Sekunden [0, 61]  */
            int     tmmin;         /* Minuten [0, 59] */
            int     tmhour;        /* Stunde [0, 23] */
            int     tmmday;        /* Monatstag [1, 31] */
            int     tmmon;         /* Monat [0, 11] */
            int     tmyear;        /* Jahre seit 1900 */
            int     tmwday;        /* Tage seit Sonntag [0, 6] */
            int     tmyday;        /* Tage seit 1. Januar 1 [0, 365] */
            int     tmisdst;       /* Schalter für Sommerzeit */
        };

     Neben der Berechnung der Kalenderzeit normalisiert mktime() die über-
     gebene tm-Struktur. Die Originalwerte der Komponenten tmwday und
     tmyday werden ignoriert; die Originalwerte der anderen Komponenten
     der Struktur sind nicht auf die oben angegebenen Grenzen beschränkt.
     Bei erfolgreicher Ausführung werden die Komponenten tmwday und
     tmyday entsprechend gesetzt; die anderen Komponenten werden so einge-
     stellt, daß sie die angegebene Kalenderzeit darstellen, wobei die ent-
     sprechenden Wertebereiche eingehalten werden. Der endgültige Wert von
     tmmday wird nicht gesetzt, bis tmmon und tmyear bestimmt sind.

     Die ursprünglichen Werte der Komponenten können größer oder kleiner
     als die angegebenen Bereiche sein. Beispielsweise zeigt der Wert -1
     für tmhour eine Stunde vor Mitternacht an; enthält tmmday den Wert
     0, so wird der Tag vor dem aktuellen Monat bezeichnet; steht tmmon
     auf -2, so bedeutet dies zwei Monate vor Januar des Jahres tmyear.

     Ist tmisdst positiv, wird angenommen, daß sich die ursprünglichen
     Werte in der alternativen Zeitzone befinden. Stellt sich heraus, daß
     die alternative Zeitzone für die berechnete Kalenderzeit ungültig ist,
     werden die Komponenten an die primäre Zeitzone angepaßt. Wenn tmisdst
     Null ist, wird angenommen, daß sich die Originalwerte in der primären
     Zeitzone befinden; diese Werte werden in die alternative Zeitzone
     übersetzt, falls die primäre Zeitzone ungültig ist. Wenn tmisdst
     negativ ist, wird die korrekte Zeitzone bestimmt, und die Komponenten
     werden nicht angepaßt.



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

mktime(3C)                                                       mktime(3C)

     Die lokale Zeitzoneninformation wird so verwendet, als wenn mktime()
     tzset() aufrufen würde.

     mktime() liefert die angegebene Kalenderzeit. Wenn die Kalenderzeit
     nicht dargestellt werden kann, wird timet-1 zurückgegeben.

BEISPIELE
     Was für ein Wochentag ist der 4. Juli 2001?

         #include <stdio.h>
         #include <time.h>

         static char *const wday[] = {
                 "Sonntag", "Montag", "Dienstag", "Mittwoch",
                 "Donnerstag", "Freitag", "Samstag", "-unbekannt-"
         };
         struct tm timestr;
         /*...*/
         timestr.tmyear        = 2001 - 1900;
         timestr.tmmon = 7 - 1;
         timestr.tmmday        = 4;
         timestr.tmhour        = 0;
         timestr.tmmin = 0;
         timestr.tmsec         = 1;
         timestr.tmisdst       = -1;
         if (mktime(&timestr)== -1)
             timestr.tmwday=7;
         printf("%s\n", wday[timestr.tmwday]);

HINWEISE
     tmyear in der tm-Struktur muß mindestens 1970 oder später sein.
     Kalenderzeiten vor 00:00:00 UTC, 1. Januar 1970 oder nach 03:14:07
     UTC, 19. Januar 2038, können nicht dargestellt werden.

SIEHE AUCH
     ctime(3C), getenv(3C), timezone(4).


















Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

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