Partilhar via


gmtime_s, _gmtime32_s, _gmtime64_s

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( &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 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