Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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( // See note in remarks section about linkage
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.
Nota:
Cuando se usa Windows SDK versión 10.0.26100.6901 y Visual Studio 2026 o posterior, gmtime_s ya static inline no es (vinculación interna). En su lugar, es inline (vinculación externa).
Para volver al comportamiento anterior, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 antes de incluir los encabezados de CRT. De forma predeterminada, _STATIC_INLINE_UCRT_FUNCTIONS se estable en 0.
Este cambio aumenta la conformidad de UCRT con el estándar de C++ y mejora la compatibilidad con los módulos de C++.
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( <ime );
// Obtain coordinated universal time:
err = _gmtime64_s( &newtime, <ime );
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