Namespaces
Variants

std:: mktime

From cppreference.net
< cpp ‎ | chrono ‎ | c
Definido en el encabezado <ctime>
std:: time_t mktime ( std:: tm * time ) ;

Convierte el tiempo de calendario local a un tiempo desde la época como un objeto std::time_t . time - > tm_wday y time - > tm_yday se ignoran. Se permite que los valores en time estén fuera de sus rangos normales.

Un valor negativo de time - > tm_isdst hace que mktime intente determinar si el Horario de Verano estaba en efecto.

Si la conversión es exitosa, el objeto time es modificado. Todos los campos de time son actualizados para ajustarse a sus rangos apropiados. time - > tm_wday y time - > tm_yday son recalculados utilizando la información disponible en otros campos.

Contenidos

Parámetros

time - puntero a un std::tm objeto que especifica el tiempo calendario local a convertir

Valor de retorno

Tiempo desde la época como un objeto std::time_t en caso de éxito o - 1 si time no puede ser representado como un objeto std::time_t .

Notas

Si el objeto std::tm fue obtenido de std::get_time o de la función POSIX strptime , el valor de tm_isdst es indeterminado y debe establecerse explícitamente antes de llamar a mktime .

Ejemplo

Construir una hora local explícitamente.

#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';
}

Salida posible:

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

Véase también

convierte el tiempo desde la época a tiempo calendario expresado como hora local
(función)
Documentación C para mktime