mktime

Aus RAD Studio
Wechseln zu: Navigation, Suche

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++

+

+

+

+