Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Converte um valor de tempo em uma tm estrutura. Essas funções são versões do , com aprimoramentos de segurança, _gmtime32conforme descrito em Recursos de_gmtime64segurança no CRT.
Sintaxe
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
Ponteiro para uma tm estrutura. Os campos da estrutura retornada mantêm o valor avaliado do timer argumento em UTC e não na hora local.
sourceTime
Ponteiro para o tempo armazenado. O tempo é representado como segundos decorridos desde a meia-noite (00:00:00), 1 de janeiro de 1970, tempo universal coordenado (UTC).
Valor de retorno
Zero se for bem-sucedido. O valor de retorno é um código de erro se houver uma falha. Os códigos de erro são definidos em Errno.h; para obter uma lista desses erros, consulte errno.
Condições de erro
tmDest |
sourceTime |
Devolução | Valor em tmDest |
|---|---|---|---|
NULL |
any | EINVAL |
Não modificado. |
Não NULL (aponta para a memória válida) |
NULL |
EINVAL |
Todos os campos definidos como -1. |
Não NULL |
< 0 | EINVAL |
Todos os campos definidos como -1. |
As duas primeiras condições de erro invocam o manipulador de parâmetros inválido, conforme descrito em Validação de parâmetros. Se a execução for permitida para continuar, essas funções serão definidas errno como EINVAL e retornarão EINVAL.
Observações
A _gmtime32_s função decompõe o sourceTime valor e armazena-o numa estrutura do tipo tm, definida em Time.h. O endereço da estrutura é passado em tmDest. O valor de sourceTime é muitas vezes obtido a partir de uma chamada para a time função.
Cada um dos campos de estrutura é do tipo int, conforme mostrado na tabela a seguir.
| Campo | Description |
|---|---|
tm_sec |
Segundos após minuto (0 - 59). |
tm_min |
Minutos após a hora (0 - 59). |
tm_hour |
Horas desde a meia-noite (0 - 23). |
tm_mday |
Dia do mês (1 - 31). |
tm_mon |
Mês (0 - 11; Janeiro = 0). |
tm_year |
Ano (ano corrente menos 1900). |
tm_wday |
Dia da semana (0 - 6; Domingo = 0). |
tm_yday |
Dia do ano (0 - 365; Janeiro 1 = 0). |
tm_isdst |
Sempre 0 para gmtime_s. |
_gmtime64_s, que usa a __time64_t estrutura, permite que as datas sejam expressas até 23:59:59, 31 de dezembro de 3000, UTC; enquanto gmtime32_s representam apenas datas até 23:59:59 18 de janeiro de 2038, UTC. Meia-noite, 1 de janeiro de 1970, é o limite inferior do intervalo de datas para ambas as funções.
gmtime_s é uma função embutida que avalia e é equivalente a _gmtime64_stime_t__time64_t. Se você precisar forçar o compilador a interpretar time_t como o antigo 32-bit time_t, você pode definir _USE_32BIT_TIME_T.
_USE_32BIT_TIME_T faz com que gmtime_s seja incrustado como _gmtime32_s. Não recomendamos _USE_32BIT_TIME_To , porque seu aplicativo pode falhar após 18 de janeiro de 2038 e porque não é permitido em plataformas de 64 bits.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, consulte Estado global na CRT.
Observação
Quando você usa o Windows SDK versão 10.0.26100.6901 e Visual Studio 2026 ou posterior juntos, gmtime_s não é mais static inline (ligação interna). Em vez disso, é inline (ligação externa).
Para retornar ao comportamento anterior, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 antes de incluir quaisquer cabeçalhos CRT. Por padrão, _STATIC_INLINE_UCRT_FUNCTIONS é definido como 0.
Essa alteração aumenta a conformidade do UCRT com o padrão C++ e melhora a compatibilidade com módulos C++.
Requerimentos
| Rotina | Cabeçalho C necessário | Cabeçalho C++ necessário |
|---|---|---|
gmtime_s, _gmtime32_s, _gmtime64_s |
<time.h> |
<ctime> ou <time.h> |
Para obter mais informações sobre compatibilidade, consulte Compatibilidade.
Example
// 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 também
Gestão do tempo
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