mktime ist definiert in der time
, die in C über time.h
, bzw. in C++ über ctime
eingebunden wird.
mktime() übersetzt die Beschreibung einer tm-Struktur in einen Zeitstempel (time_t).
Dabei werden tm_wday und tm_yday der 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 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.
#include <time.h> time_t mktime( struct tm * timePtr );
timePtr: zu übersetzende Zeitbeschreibung vom Typ struct tm
Return value: Zeitstempel vom Typ time_t
-
Berechnen des Wochentags für ein bestimmtes Datum
#include <stdio.h> #include <time.h> #include <stdlib.h> 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.