mktime()

mktime ist definiert in der time, die in C über time.h, bzw. in C++ über ctime eingebunden wird.

Funktion

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.

Signatur

#include <time.h>
time_t mktime( struct tm * timePtr );

timePtr: zu übersetzende Zeitbeschreibung vom Typ struct tm

Return value: Zeitstempel vom Typ time_t

Fehlerquellen

-

Beispiel

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.

siehe auch