Namensräume
Varianten
Aktionen

mktime

Von cppreference.com
< c‎ | chrono
Definiert in Header <time.h>
time_t mktime( struct tm* arg );

Renormalisiert die lokale Kalenderzeit, ausgedrückt als struct tm Objekt, und konvertiert sie auch in die Zeit seit der Epoche als time_t Objekt. arg->tm_wday und arg->tm_yday werden ignoriert. Die Werte in arg werden nicht auf Werte außerhalb des Bereichs geprüft.

Ein negativer Wert für arg->tm_isdst veranlasst mktime zu versuchen zu bestimmen, ob die Sommerzeit für die angegebene Zeit wirksam war.

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

Inhalt

[bearbeiten] Parameter

arg - Zeiger auf ein tm Objekt, das die zu konvertierende lokale Kalenderzeit angibt.

[bearbeiten] Rückgabewert

Zeit seit der Epoche als time_t Objekt bei Erfolg, oder -1 wenn arg nicht als time_t Objekt dargestellt werden kann (POSIX schreibt in diesem Fall auch vor, dass EOVERFLOW in errno gespeichert wird).

[bearbeiten] Hinweise

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

[bearbeiten] 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)

[bearbeiten] Referenzen

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

[bearbeiten] Siehe auch

konvertiert Zeit seit Epoche in Kalenderzeit, ausgedrückt als lokale Zeit
(Funktion) [bearbeiten]
C++ Dokumentation für mktime