====== mktime() ====== mktime ist definiert in der ''[[start|time]]'', die in C über ''time.h'', bzw. in C++ über ''ctime'' eingebunden wird. ===== Funktion ===== mktime() übersetzt die Beschreibung einer [[struct_tm|tm-Struktur]] in einen Zeitstempel ([[time_t]]). Dabei werden tm_wday und tm_yday der [[struct_tm|tm-Struktur]] ignoriert, andere Einträge dürfen unübliche Größen besitzen (z.B. tm_mday darf über 31 liegen). Bei der Berechnung des Zeitstempels werden die Werte der übergebenen [[struct_tm|tm-Struktur]] korrigiert und in gültige Bereiche gesetzt (z.B. tm_mday zwischen 1 und 31) und tm_wday und tm_yday korrekt gesetzt. Die übergebene Struktur also verändert. ===== Signatur ===== #include time_t mktime( struct tm * timePtr ); **timePtr**: zu übersetzende Zeitbeschreibung vom Typ [[struct_tm|struct tm]] **Return value**: Zeitstempel vom Typ [[time_t]] ===== Fehlerquellen ===== - ===== Beispiel ===== Berechnen des Wochentags für ein bestimmtes Datum #include #include #include int main () { time_t timeStamp; struct tm * timeInfo; int year, month ,day; char * weekday[] = { "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"}; /* Eingabe des gewünschten Datums */ printf( "Jahr: " ); scanf( "%d", &year ); printf( "Monat: " ); scanf( "%d", &month ); printf( "Tag: " ); scanf( "%d", &day ); /* Aktuelle Zeit holen und Datum entsprechend verändern */ /* get current timeinfo and modify it to the user's choice */ time( &timeStamp ); timeInfo = localtime( &timeStamp ); timeInfo->tm_year = year - 1900; timeInfo->tm_mon = month - 1; timeInfo->tm_mday = day; /* durch mktime()-Aufruf den Wochentag berechnen lassen */ mktime( timeInfo ); printf("Dieser Tag ist ein %s.\n", weekday[ timeInfo->tm_wday ] ); return EXIT_SUCCESS; } Ausgabe: Jahr: 1976 Monat: 10 Tag: 03 Dieser Tag ist ein Sonntag. ===== siehe auch ===== [[c:lib:time:start|time]]: [[c:lib:time:time|time()]], [[c:lib:time:localtime|localtime()]], [[c:lib:time:struct_tm|struct tm]], [[c:lib:time:time_t|time_t]] \\ [[c:lib:stdio:start|stdio]]: [[c:lib:stdio:printf|printf()]], [[c:lib:stdio:scanf|scanf()]]