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(×tr)== -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