Namespaces
Variants

mktime

From cppreference.net
Definido en el encabezado <time.h>
time_t mktime ( struct tm * arg ) ;

Renormaliza el tiempo de calendario local expresado como un objeto struct tm y también lo convierte a tiempo desde época como un objeto time_t . arg - > tm_wday y arg - > tm_yday se ignoran. Los valores en arg no se verifican por estar fuera de rango.

Un valor negativo de arg - > tm_isdst hace que mktime intente determinar si el horario de verano estaba en efecto en el tiempo especificado.

Si la conversión a time_t es exitosa, el objeto arg se modifica. Todos los campos de arg se actualizan para ajustarse a sus rangos apropiados. arg - > tm_wday y arg - > tm_yday se recalculan utilizando la información disponible en otros campos.

Contenidos

Parámetros

arg - puntero a un tm objeto que especifica el tiempo calendario local a convertir

Valor de retorno

El tiempo desde el epoch como un objeto time_t en caso de éxito, o - 1 si arg no puede ser representado como un objeto time_t (POSIX también requiere que EOVERFLOW sea almacenado en errno en este caso).

Notas

Si el objeto struct tm fue obtenido de POSIX strptime o una función equivalente, el valor de tm_isdst es indeterminado, y necesita establecerse explícitamente antes de llamar a mktime .

Ejemplo

#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");
}

Salida posible:

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)

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.27.2.3 La función mktime (p: TBD)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.27.2.3 La función mktime (p: 285-286)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.27.2.3 La función mktime (p: 390-391)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.23.2.3 La función mktime (p: 340-341)
  • Estándar C89/C90 (ISO/IEC 9899:1990):
  • 4.12.2.3 La función mktime

Véase también

convierte el tiempo desde la época en tiempo calendario expresado como hora local
(función)