mktime
Nach oben zu time.h - Index
Header-Datei
time.h
Kategorie
Uhrzeit- und Datumsroutinen
Prototyp
time_t mktime(struct tm *t);
Beschreibung
Konvertiert eine Zeitangabe in das Kalenderformat.
mktime konvertiert die Zeitwerte in der Struktur, auf die t zeigt, in das gleiche Format, das auch die Funktion time verwendet. Die ursprünglichen Werte der Felder tm_sec, tm_min, tm_hour, tm_mday und tm_mon sind nicht auf die in der tm-Struktur vorgesehenen Bereiche beschränkt. Werte außerhalb des korrekten Bereichs werden richtiggestellt. Die Werte der Felder tm_wday und tm_yday werden erst berechnet, nachdem die anderen Felder korrigiert wurden.
Das Feld tm_isdst (Daylight Savings Time = Sommerzeit) wird nach dem Aufruf der Funktion mktime mit dem korrekten Wert aktualisiert. Mit tm_isdst wird auch der Wert von tm_hour angepasst. Wenn der Wert von tm_isdst beispielsweise 1 ist, aber das aktuelle Datum nicht in die Sommerzeit fällt, aktualisiert mktime tm_hour (tm_hour = tm_hour - 1) und setzt tm_isdst auf 0.
Der für Kalenderwerte erlaubte Bereich beginnt mit dem 1. Januar 1970, 00:00:00 Uhr und reicht bis zum 19. Januar 2038, 03:14:07 Uhr.
Rückgabewert
Wenn erfolgreich, gibt mktime die Kalenderzeit im oben beschriebenen Format zurück.
Bei einem Fehler (wenn die Kalenderzeit nicht dargestellt werden kann), gibt mktime -1 zurück.
Beispiel
#include <stdio.h> #include <time.h>
char *wday[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
"Saturday", "Unknown"}; int main(void) { struct tm time_check; int year, month, day; /*
Zur Ermittlung des Wochentags Jahr, Monat und Tag angeben */ printf("Year: "); scanf("%d",
&year); printf("Month: "); scanf("%d", &month); printf("Day: "); scanf("%d",
&day); /* Daten in time_check-Struktur speichern */ time_check.tm_year = year -
1900; time_check.tm_mon = month - 1; time_check.tm_mday = day; time_check.tm_hour = 0;
time_check.tm_min = 0; time_check.tm_sec = 1; time_check.tm_isdst = -1; /* rufen Sie mktime auf, um die Wochentagstruktur von aufzufüllen */ if (mktime(&time_check) == -1)
time_check.tm_wday = 7; /* Wochentag ausgeben*/ printf("That day is a %s\n",
wday[time_check.tm_wday]); return 0; }
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |
+ |
+ |