Namespaces
Variants

mktime

From cppreference.net
Definiert in Header <time.h>
time_t mktime ( struct tm * arg ) ;

Renormalisiert die lokale Kalenderzeit, ausgedrückt als ein struct tm Objekt, und konvertiert sie ebenfalls in Zeit seit der Epoche als ein time_t Objekt. arg - > tm_wday und arg - > tm_yday werden ignoriert. Die Werte in arg werden nicht auf Bereichsüberschreitung überprüft.

Ein negativer Wert von arg - > tm_isdst bewirkt, dass mktime versucht zu bestimmen, ob Sommerzeit zur angegebenen Zeit in Kraft war.

Wenn die Konvertierung zu time_t erfolgreich ist, wird das arg -Objekt modifiziert. Alle Felder von arg werden aktualisiert, um in ihre gültigen Bereiche zu passen. arg - > tm_wday und arg - > tm_yday werden unter Verwendung der in anderen Feldern verfügbaren Informationen neu berechnet.

Inhaltsverzeichnis

Parameter

arg - Zeiger auf ein tm Objekt, das die lokale Kalenderzeit zur Konvertierung angibt

Rückgabewert

Die Zeit seit der Epoche als time_t -Objekt bei Erfolg, oder - 1 falls arg nicht als time_t -Objekt dargestellt werden kann (POSIX verlangt in diesem Fall zusätzlich, dass EOVERFLOW in errno gespeichert wird).

Hinweise

Wenn das struct tm -Objekt von POSIX strptime oder einer entsprechenden Funktion stammt, ist der Wert von tm_isdst unbestimmt und muss explizit gesetzt werden, bevor mktime aufgerufen wird.

Beispiel

#define _POSIX_C_SOURCE 200112L // for setenv on gcc
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
    setenv("TZ", "/usr/share/zoneinfo/America/New_York", 1); // POSIX-specific
    struct tm tm = *localtime(&(time_t){time(NULL)});
    printf("Today is           %s", asctime(&tm));
    printf("(DST is %s)\n", tm.tm_isdst ? "in effect" : "not in effect");
    tm.tm_mon -= 100;  // tm_mon is now outside its normal range
    mktime(&tm);       // tm_isdst is not set to -1; today's DST status is used
    printf("100 months ago was %s", asctime(&tm));
    printf("(DST was %s)\n", tm.tm_isdst ? "in effect" : "not in effect");
}

Mögliche Ausgabe:

Today is           Fri Apr 22 11:53:36 2016
(DST is in effect)
100 months ago was Sat Dec 22 10:53:36 2007
(DST was not in effect)

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.27.2.3 Die mktime-Funktion (S.: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.27.2.3 Die mktime-Funktion (S: 285-286)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.27.2.3 Die mktime-Funktion (S: 390-391)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.23.2.3 Die mktime-Funktion (S: 340-341)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 4.12.2.3 Die mktime-Funktion

Siehe auch

wandelt Zeit seit Epoche in Kalenderzeit um, ausgedrückt als Ortszeit
(Funktion)