gmtime_s, _gmtime32_s, _gmtime64_s

Convierte un valor de hora en una estructura tm. Estas funciones son versiones de _gmtime32, _gmtime64 con mejoras de seguridad, como se describe en Características de seguridad de CRT.

Sintaxis

errno_t gmtime_s(
   struct tm* tmDest,
   const __time_t* sourceTime
);
errno_t _gmtime32_s(
   struct tm* tmDest,
   const __time32_t* sourceTime
);
errno_t _gmtime64_s(
   struct tm* tmDest,
   const __time64_t* sourceTime
);

Parámetros

tmDest
Puntero a una estructura tm. Los campos de la estructura devuelta contienen el valor evaluado del argumento de timer en hora UTC y no en hora local.

sourceTime
Puntero a la hora almacenada. La hora se representa como los segundos transcurridos desde la medianoche (00:00:00) del 1 de enero de 1970, hora universal coordinada (UTC).

Valor devuelto

Cero si es correcta. Si se produce un error, el valor devuelto es un código de error. Los códigos de error se definen en Errno.h; para obtener una lista de estos errores, consulte errno.

Condiciones del error

tmDest sourceTime Return Valor de tmDest
NULL cualquiera EINVAL No modificado.
No NULL (apunta a la memoria válida) NULL EINVAL Todos los campos establecidos en -1.
No NULL < 0 EINVAL Todos los campos establecidos en -1.

Las dos primeras condiciones de error invocan el controlador de parámetros no válido, como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones establecen errno en EINVAL y devuelven EINVAL.

Comentarios

La función _gmtime32_s desglosa el valor sourceTime y lo almacena en una estructura de tipo tm, definida en Time.h. La dirección de la estructura se pasa en tmDest. El valor de sourceTime se suele obtener de una llamada a la función time.

Cada uno de los campos de la estructura es de tipo int, como se muestra en la tabla siguiente.

Campo Descripción
tm_sec Segundos después del minuto (0 - 59).
tm_min Minutos después de la hora (0 - 59).
tm_hour Horas desde la medianoche (0 - 23).
tm_mday Día del mes (1 - 31).
tm_mon Mes (0 - 11; enero = 0).
tm_year Año (año actual menos 1900).
tm_wday Día de la semana (0 - 6; domingo = 0).
tm_yday Día del año (0 - 365; 1 de enero = 0).
tm_isdst Es siempre 0 para gmtime_s.

_gmtime64_s, que usa la estructura de __time64_t, permite expresar fechas hasta las 23:59:59 del 31 de diciembre de 3000, hora UTC, mientras que gmtime32_s solo representa fechas hasta las 23:59:59 del 18 de enero de 2038, hora UTC. La medianoche del 1 de enero de 1970 es el límite inferior del intervalo de fechas para ambas funciones.

gmtime_s es una función insertada que se evalúa como _gmtime64_s, y time_t es equivalente a __time64_t. Si necesita forzar el compilador para interpretar time_t como el antiguo time_tde 32 bits, puede definir _USE_32BIT_TIME_T. _USE_32BIT_TIME_T hace gmtime_s que se inserte como _gmtime32_s. _USE_32BIT_TIME_T no es recomendable porque puede producir un error en la aplicación después del 18 de enero de 2038 y no se permite en plataformas de 64 bits.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Requisitos

Routine Encabezado C necesario Encabezado C++ necesario
gmtime_s, _gmtime32_s, _gmtime64_s <time.h> <ctime> o <time.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// crt_gmtime64_s.c
// This program uses _gmtime64_s to convert a 64-bit
// integer representation of coordinated universal time
// to a structure named newtime, then uses asctime_s to
// convert this structure to an output string.

#include <time.h>
#include <stdio.h>

int main( void )
{
   struct tm newtime;
   __int64 ltime;
   char buf[26];
   errno_t err;

   _time64( &ltime );

   // Obtain coordinated universal time:
   err = _gmtime64_s( &newtime, &ltime );
   if (err)
   {
      printf("Invalid Argument to _gmtime64_s.");
   }

   // Convert to an ASCII representation
   err = asctime_s(buf, 26, &newtime);
   if (err)
   {
      printf("Invalid Argument to asctime_s.");
   }

   printf( "Coordinated universal time is %s\n",
           buf );
}
Coordinated universal time is Fri Apr 25 20:12:33 2003

Consulte también

Administración de tiempo
asctime_s, _wasctime_s
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_ftime, _ftime32, _ftime64
gmtime, _gmtime32, _gmtime64
localtime_s, _localtime32_s, _localtime64_s
_mkgmtime, _mkgmtime32, _mkgmtime64
mktime, _mktime32, _mktime64
time, _time32, _time64