Namespaces
Variants

std:: mktime

From cppreference.net
< cpp ‎ | chrono ‎ | c
Definiert im Header <ctime>
std:: time_t mktime ( std:: tm * time ) ;

Wandelt die lokale Kalenderzeit in eine Zeit seit dem Epochenbeginn als std::time_t Objekt um. time - > tm_wday und time - > tm_yday werden ignoriert. Die Werte in time dürfen außerhalb ihrer normalen Bereiche liegen.

Ein negativer Wert von time - > tm_isdst veranlasst mktime zu versuchen festzustellen, ob Sommerzeit in Kraft war.

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

Inhaltsverzeichnis

Parameter

time - Zeiger auf ein std::tm Objekt, das die lokale Kalenderzeit zur Konvertierung angibt

Rückgabewert

Zeit seit Epoche als std::time_t -Objekt bei Erfolg oder - 1 falls time nicht als std::time_t -Objekt dargestellt werden kann.

Hinweise

Wenn das std::tm -Objekt von std::get_time oder der POSIX-Funktion strptime erhalten wurde, ist der Wert von tm_isdst unbestimmt und muss vor dem Aufruf von mktime explizit gesetzt werden.

Beispiel

Konstruieren Sie explizit eine lokale Zeit.

#include <ctime>
#include <iomanip>
#include <iostream>
#include <sstream>
int main()
{
    setenv("TZ", "/usr/share/zoneinfo/America/Los_Angeles", 1); // POSIX-specific
    std::tm tm{}; // Zero initialise
    tm.tm_year = 2020 - 1900; // 2020
    tm.tm_mon = 2 - 1; // February
    tm.tm_mday = 15; // 15th
    tm.tm_hour = 10;
    tm.tm_min = 15;
    tm.tm_isdst = 0; // Not daylight saving
    std::time_t t = std::mktime(&tm); 
    std::tm local = *std::localtime(&t);
    std::cout << "local: " << std::put_time(&local, "%c %Z") << '\n';
}

Mögliche Ausgabe:

local: Sat Feb 15 10:15:00 2020 PST

Siehe auch

wandelt Zeit seit Epoche in Kalenderzeit ausgedrückt als lokale Zeit um
(Funktion)
C-Dokumentation für mktime