Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

mktime, mktime64 - Umwandlung von Datum und Uhrzeit (Kalenderfunktion)

&pagelevel(4)&pagelevel

Definition

#include <time.h>

time_t mktime(struct tm *tm_zg); time64_t mktime64(struct tm *tm_zg);

mktime und mktime64 wandeln Datum und Uhrzeit, die der Benutzer in einer Struktur vom Typ tm angibt, in eine Zeitangabe um, die als Anzahl der seit dem Stichtag (Epoche) vergangenen Sekunden dargestellt ist. Daten vor dem Stichtag werden als negative Werte zurückgegeben. Das kleinste darstellbare Datum ist bei mktime der 13.12.1901 20:45:52 und bei mktime64 der 01.01.1900 00:00:00 lokale Zeit.

Bei der Berechnung vervollständigen mktime und mktime64 die tm-Struktur mit den Werten für Wochentag (0-6) und Tag seit Jahresbeginn (0-365) und passen die Werte der übrigen Komponenten an die standardmäßig vorgesehenen Wertebereiche an (siehe auch Parameterbeschreibung).

Standardmäßig ist der Stichtag immer der 01.01.1970 00:00:00.

Falls die Kalenderzeit wegen fehlender Angaben im Eingabeparameter nicht dargestellt werden kann, liefern mktime/mktime64 den Rückgabewert -1. Dies gilt bei mktime auch für Daten vor dem 13.12.1901 20:45:52 bzw. nach dem 19.01.2038 03:14:07.

mktime64 kann Daten bis zum 18.3.4317 02:44:48 darstellen.

Parameter

struct tm *tm_zg

Zeiger auf eine Struktur vom Typ tm, die vom Benutzer mit den Datums- und Uhrzeitangaben versorgt und anschließend von mktime/mktime64 aktualisiert wird. In Klammern sind die Wertebereiche angegeben, die standardmäßig vorgesehen sind.

int   tm_sec;           Sekunden (0-59)
int   tm_min;           Minuten (0-59)
int   tm_hour;          Stunden (0-23)
int   tm_mday;          Tag des Monats (1-31)
int   tm_mon;           Monate ab Jahresbeginn (0-11)
int   tm_year;          Jahre seit 1900
int   tm_wday;          Wochentag (0-6, Sonntag=0)
int   tm_yday;          Tage seit dem 1. Januar (0-365)
int   tm_isdst;         Sommerzeitanzeige:
                        0    Sommerzeit ist nicht aktiv
                        >0   Sommerzeit ist aktiv
                        <0   Information ist nicht verfügbar
  1. Datums- und Uhrzeitangaben des Benutzers

    Die Komponenten tm_wday und tm_yday brauchen nicht versorgt zu zu werden, da mktime diese bei der Berechnung von time_t ignoriert und anschließend selbst mit den passenden Werten versorgt.
    Alle anderen Komponenten müssen mit einem Wert belegt sein. Diese Werte sind nicht auf die o.g. standardmäßigen Wertebereiche begrenzt, d.h. sie können auch größer oder kleiner sein.

    Beispiele dafür:

    -1 in tm_hour bedeutet 1 Stunde vor Mitternacht,
    0 in tm_mday bedeutet den letzten Tag des Vormonats,
    -2 in tm_mon bedeutet 2 Monate vor dem Januar im Jahre tm_year.

  2. Aktualisierung der Struktur durch mktime

    Die Komponenten tm_wday und tm_yday erhalten die zu den Benutzerangaben passenden Werte.
    Die anderen Komponenten werden so belegt, dass ihre Werte den o.g. Standardbereichen entsprechen.
    Der Wert von tm_mday wird nicht belegt, bevor nicht tm_mon und tm_year bestimmt sind.

Returnwert 

Integer > 0

Bei Ortszeiten nach dem Stichtag (Epoche): Anzahl der Sekunden, die seit dem Stichtag vergangen sind.


Integer < 0

Bei Ortszeiten vor dem Stichtag (Epoche): Anzahl der Sekunden, die bis dahin vergangen sind.


(time_t)-1

falls die Zeit nicht darstellbar ist.

Hinweis

Da bei Erfolg auch -1 zurückgeliefert werden kann, sollte eine Anwendung zur Überprüfung von Fehlersituationen errno auf 0 setzen, bevor die Funktion aufgerufen wird.
Wenn -1 zurückgeliefert wird, dann sollte die Anwendung prüfen, ob errno ungleich 0 ist.

Siehe auch

asctime, ctime, ctime64, difftime, difftime64, ftime, ftime64, gmtime, gmtime64, localtime, localtime64, time, time64