mktime
, _mktime32
, _mktime64
Converta a hora local para um valor de calendário.
Sintaxe
time_t mktime(
struct tm *timeptr
);
__time32_t _mktime32(
struct tm *timeptr
);
__time64_t _mktime64(
struct tm *timeptr
);
Parâmetros
timeptr
Ponteiro para a estrutura de hora, confira asctime
.
Retornar valor
_mktime32
retorna o horário do calendário especificado, decodificado como valor do tipo time_t
. Se timeptr
fizer referência a uma data antes da meia-noite, 1º de janeiro de 1970, ou se a hora do calendário não puder ser representada, _mktime32
retornará -1 cast para digitar time_t
. Ao usar _mktime32
e se timeptr
fizer referência a uma data posterior a 23:59:59 de 18 de janeiro de 2038, UTC (Tempo Universal Coordenado), ele retornará -1 convertido no tipo time_t
.
_mktime64
retornará -1 convertido no tipo __time64_t
se timeptr
fizer referência a uma data posterior a 23:59:59 de 31 de dezembro de 3000, UTC.
Comentários
As funções mktime
, _mktime32
e _mktime64
convertem a estrutura de horário fornecida (possivelmente incompleta) apontada por timeptr
em uma estrutura completamente definida com valores normalizados e a converte em um valor temporal de calendário time_t
. O horário convertido tem a mesma codificação dos valores retornados pela função time
. Os valores originais dos componentes tm_wday
e tm_yday
da estrutura timeptr
são ignorados e os valores originais dos outros componentes não ficam restritos aos seus intervalos normais.
mktime
é uma função embutida equivalente a _mktime64
, a menos que _USE_32BIT_TIME_T
seja definido e, nesse caso, ela será equivalente a _mktime32
.
Após um ajuste para UTC, _mktime32
lida com datas a partir da meia-noite de 1º de janeiro de 1970 até 23:59:59 de 18 de janeiro de 2038. _mktime64
lida com datas a partir da meia-noite de 1º de janeiro de 1970 até 23:59:59 de 31 de dezembro de 3000. Esse ajuste pode fazer com que essas funções retornem -1 (convertido para time_t
, __time32_t
ou __time64_t
) embora a data especificada esteja dentro do intervalo. Por exemplo, se você estiver no Cairo, Egito, que está duas horas antes do UTC, duas horas serão primeiro subtraídas da data especificada em timeptr
, a subtração agora pode colocar sua data fora do intervalo.
Essas funções podem ser usadas para validar e preencher uma estrutura de tm
. Se bem-sucedidas, essas funções estabelecem os valores de tm_wday
e tm_yday
quando adequado e definem os outros componentes para representar o horário do calendário especificado, mas com seus valores impostos pelos intervalos normais. O valor final de tm_mday
não é definido até que tm_mon
e tm_year
sejam determinados. Ao especificar um horário de estrutura tm
, defina o campo tm_isdst
como:
Zero (0) para indicar que o horário padrão está em vigor.
Um valor maior que 0 para indicar que o horário de verão está em vigor.
Um valor menor que zero para fazer que com o código da biblioteca de tempo de execução C calcule se o horário padrão, ou o horário de verão está em vigor.
A biblioteca de runtime do C determinará o comportamento do horário de verão com base na variável de ambiente TZ
. Se TZ
não for definido, a chamada à API do Win32 GetTimeZoneInformation
será usada para obter as informações do horário de verão do sistema operacional. Se a chamada falhar, a biblioteca assume que as regras dos Estados Unidos para implementar o cálculo do horário de verão são usadas. tm_isdst
é um campo obrigatório. Se não definidas, seu valor é indefinido e o valor retornado dessas funções é imprevisível. Se timeptr
apontar para uma estrutura tm
retornada por uma chamada anterior para asctime
, gmtime
ou localtime
(ou variantes dessas funções), o campo tm_isdst
conterá o valor correto.
As gmtime
funções e (e , , _localtime32
_gmtime64
e _localtime64
localtime
_gmtime32
) usam um único buffer por thread para a conversão. Se esse buffer for fornecido a mktime
, _mktime32
ou _mktime64
, os conteúdos anteriores serão destruídos.
Essas funções validam seus parâmetros. Se timeptr
for um ponteiro nulo, o manipulador de parâmetros inválido será chamado, conforme descrito em Validação de parâmetro. Se a execução puder continuar, essas funções retornarão -1 e definirão errno
como EINVAL
.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, consulte Estado global na CRT.
Requisitos
Rotina | Cabeçalho necessário |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Bibliotecas
Todas as versões das bibliotecas em tempo de execução C.
Exemplo
// crt_mktime.c
/* The example takes a number of days
* as input and returns the time, the current
* date, and the specified number of days.
*/
#include <time.h>
#include <stdio.h>
int main( void )
{
struct tm when;
__time64_t now, result;
int days;
char buff[80];
time( &now );
_localtime64_s( &when, &now );
asctime_s( buff, sizeof(buff), &when );
printf( "Current time is %s\n", buff );
days = 20;
when.tm_mday = when.tm_mday + days;
if( (result = mktime( &when )) != (time_t)-1 ) {
asctime_s( buff, sizeof(buff), &when );
printf( "In %d days the time will be %s\n", days, buff );
} else
perror( "mktime failed" );
}
Saída de exemplo
Current time is Fri Apr 25 13:34:07 2003
In 20 days the time will be Thu May 15 13:34:07 2003
Confira também
Gerenciamento de tempo
asctime
, _wasctime
gmtime
, _gmtime32
, _gmtime64
localtime
, _localtime32
, _localtime64
_mkgmtime
, _mkgmtime32
, _mkgmtime64
time
, _time32
, _time64
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de