====== 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()]]