Partilhar via


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

Gerenciamento de tempo

asctime, _wasctime

gmtime, _gmtime32, _gmtime64

localTime, _localtime32, _localtime64

_mkgmtime, _mkgmtime32, _mkgmtime64

tempo, _time32, _time64