mktime _mktime32, _mktime64
Converter a time 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 à estrutura de time; consulte asctime.
Valor de retorno
_mktime32 retorna a time de calendário especificado codificada sistema autônomo um valor de tipo time_t.If timeptr faça referência a uma data antes da meia-noite, 1 º de janeiro de 1970, ou se o time do calendário não pode ser representado, _mktime32 retorna – 1 convertido para digitar time_t. Ao usar _ mktime32 and if timeptr faz referência a uma data após 14: 03: 07 19 de janeiro de 2038, time do Coordinated Universal (UTC), ela retornará – 1 convertido para digitar time_t.
_mktime64 retornará – 1 convertido para digitar __time64_t if timeptr faz referência a uma data posterior a 23: 59: 59, 31 de dezembro de 3000, UTC.
Comentários
The mktime, _mktime32 and _mktime64 funções convertem a estrutura de time fornecido (possivelmente incompleta) apontada por timeptr em uma estrutura totalmente definida com valores normalizados e a converte para um time_t valor temporal do calendário. A time convertida tem a mesma codificação sistema autônomo sistema autônomo valores retornados pelo time função.Os valores originais do tm_wday and tm_yday componentes de do timeptr estrutura são ignorados e os valores originais dos outros componentes não são restritos aos seus intervalos normais.
mktime é uma função in-line que é equivalente a _mktime64, a menos que _USE_32BIT_TIME_T é definida, caso em que é equivalente a _mktime32.
Depois de um ajuste para UTC, _ mktime32 trata as datas de meia-noite, 1 º de janeiro de 1970 para 03: 14: 07, 19 de janeiro de 2038._mktime64 lida com datas de meia-noite, 1 º de janeiro de 1970 para 23: 59: 59, 31 de dezembro de 3000. Esse ajuste pode fazer com que essas funções retornar -1 (difusão para time_t, __time32_t or __time64_t) Embora a data especificada está no intervalo.Por exemplo, se você estiver em Cairo, Egito, que está duas horas antes do UTC, duas horas será primeiro ser subtraídas de na data especificada em timeptr; esta pode agora colocar sua data fora do intervalo.
Essas funções podem ser usadas para validar e preencher um TM estrutura.Se for bem-sucedido, essas funções conjunto sistema autônomo valores de tm_wday and tm_yday conforme apropriado e conjunto sistema autônomo outros componentes para representar o calendário especificado de time, mas com seus valores forçados a faixas normais.O valor final de tm_mday não é conjunto até tm_mon and tm_year são determinadas.Ao especificar um TM estrutura time, conjunto o tm_isdst campo para:
Zero (0) para indicar o time padrão está em vigor.
Um valor maior que 0 para indicar que verão time está em vigor.
Um valor menor que zero para que o C em time de execução código da biblioteca de computação se time padrão ou a time de verão estiver em efeito.
A biblioteca de time de execução C determinará que o horário de verão time comportamento do TZ variável de ambiente.If TZ não estiver definido, o Win32 API telefonar GetTimeZoneInformation é usado para obter o horário de verão informações de time 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 campo obrigatório.Se não for definida, seu valor é indefinido e o valor retornado dessas funções é imprevisível.If timeptr aponta para um TM estrutura retornada por uma telefonar anterior a asctime, gmtime, ou localtime (ou variantes dessas funções), o tm_isdst campo 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 esse buffer para mktime, _mktime32 or _mktime64, o Sumário anterior é destruído.
Essas funções validam seus parâmetros.If timeptr é um ponteiro nulo, o manipulador de parâmetro inválido é chamado, conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, as funções retornam -1 e conjunto errno para EINVAL.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.
Bibliotecas
Todas as versões do C em time de execução bibliotecas.
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