mktime, _mktime32, _mktime64
Converta a hora local para um valor de calendário.
time_t mktime(
struct tm *timeptr
);
__time32_t _mktime32(
struct tm *timeptr
);
__time64_t _mktime64(
struct tm *timeptr
);
Parâmetros
- timeptr
Ponteiro de estruturade tempo. consulte asctime.
Valor de retorno
_mktime32 retorna a hora de calendário especificado codificada como um valor do tipo time_t.Se timeptr faz referência a uma data anterior à meia-noite de 1º de janeiro de 1970, ou se o tempo do calendário não pode ser representado, _mktime32 retorna – 1 convertida para o tipo time_t.Ao usar o _mktime32 e se timeptr faz referência a uma data após 03: 14: 07 em 19 de janeiro de 2038, Hora Universal Coordenada (UTC), ela retornará – 1 convertida para o tipo time_t.
_mktime64retornará – 1 convertida para o tipo __time64_t se timeptr faz referência a uma data posterior a 23: 59: 59, 31 de dezembro de 3000, a UTC.
Comentários
O mktime, _mktime32 e _mktime64 funções de converter a hora fornecida estrutura (possivelmente incompleta) apontada por timeptr em uma estrutura completamente definidas com valores de normalizados e a converte para um time_t valor temporalde calendário.A hora convertida tem a mesma codificação que os valores retornados pelo tempofunção. Os valores originais da tm_wday e tm_yday componentes da timeptrestrutura são ignoradas, e os valores originais dos outros componentes não são restritos a suas faixas normais.
mktimeé umafunção de embutidoque é equivalente a _mktime64, a menos que _USE_32BIT_TIME_T for definido, em cujo maiúsculas e minúsculas é equivalente a _mktime32.
Após um ajuste para UTC, _mktime32 alças datas de meia-noite, de 1º de janeiro de 1970, em 03: 14: 07, 19 de janeiro de 2038._mktime64lida com datas de meia-noite, de 1º de janeiro de 1970 a 23: 59: 59, 31 de dezembro de 3000.Esse ajuste pode fazer com que essas funções retornar -1 (convertido em time_t, __time32_t ou __time64_t), embora a data especificada está no intervalo.Por exemplo, se você estiver em Cairo, Egito, que é de duas horas antes do UTC, duas horas será primeiro subtraídas a partir da data em que você especifica em timeptr; Agora, isso pode colocar sua data fora do intervalo.
Essas funções podem ser usados para validar e preencher um tmestrutura. Se for bem sucedido, essas funções definem os valores das tm_wday e tm_yday conforme apropriado e defina os outros componentes para representar o tempo do calendário especificado, mas com seus valores forçado para os intervalos de normais.O valor final da tm_mday não está definido até que tm_mon e tm_year são determinadas.Ao especificar um tm estrutura de tempo, defina a tm_isdstocampo para:
Zero (0) para indicar que a hora 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 que o código da biblioteca c run-time de computação se hora padrão ou o horário de verão está em vigor.
O c run-time biblioteca irá determinar o comportamento em tempo de economia verão o TZvariáveldeambiente. Se TZ não estiver definido, o Win32, chamada à APIGetTimeZoneInformation é usado para obter o horário de verão informações de hora do sistema operacional. Se isso falhar, a biblioteca assume as regras dos Estados Unidos para implementar o cálculo do horário de verão são usadas.tm_isdst é um campode obrigatório.Se não definida, seu valor não está definido e o valor retornado a partir dessas funções é imprevisível.Se timeptr aponta para uma tmestrutura retornado por uma chamada anterior a asctime, gmtime, ou localtime (ou variantes dessas funções), o tm_isdstcampo contém o valor correto.
Observe que gmtime e localtime (e _gmtime32, _gmtime64, _localtime32, e _localtime64) usam um único buffer por thread para a conversão.Se você fornecer desse buffer para mktime, _mktime32 ou _mktime64, o conteúdo anterior é destruído.
Essas funções validar seu parâmetro.Se timeptr é um ponteiro nulo, o manipulador deparâmetro inválidoé invocado, conforme descrito em Validação de parâmetro. Se a execução terá permissão para continuar, as funções retornam -1 e defina errno para EINVAL.
Requisitos
Rotina |
Necessário cabeçalho |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.
Bibliotecas
Todas as versões da bibliotecas de 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" );
}
Exemplo de saída
Current time is Fri Apr 25 13:34:07 2003
In 20 days the time will be Thu May 15 13:34:07 2003
Equivalência do .NET Framework
System::DateTime::DateTime
Consulte também
Referência
localTime, _localtime32, _localtime64