Partilhar via


_mkgmtime _mkgmtime32, _mkgmtime64

Converte uma time UTC representada por um tm estrutura para uma time UTC representado por um time_t Digite.

time_t _mkgmtime(
   struct tm* timeptr
);
__time32_t _mkgmtime32(
   struct tm* timeptr
);
__time64_t _mkgmtime64(
   struct tm* timeptr
);

Parâmetros

  • timeptr
    Um ponteiro para a time UTC, sistema autônomo um tm struct para converter.

Valor de retorno

Uma quantidade do tipo __ time32_t or __time64_t que representa o número de segundos passados desde meia-noite, 1 º de janeiro de 1970, em time universal coordenada (UTC).Se a data estiver fora do intervalo (consulte a seção comentários) ou a entrada não puder ser interpretada sistema autônomo uma time válida, o valor retornado é – 1.

Comentários

The _mkgmtime32 and _mkgmtime64 funções convertem uma time UTC um __time32_t or __time64_ttipo de que representa a time em UTC.Para converter um horário local em time UTC, use mktime, _mktime32, and _mktime64 em vez disso.

In Visual C++ 2005, _mkgmtime é uma função in-line que é avaliada como _mkgmtime64, e time_t é equivalente a __time64_t.Caso você precise forçar o compilador para interpretar **time_t **sistema autônomo o antigo de 32 bit time_t, você pode definir _USE_32BIT_TIME_T.Isso não é recomendado porque seu aplicativo pode falhar após 19 de janeiro de 2038 (o intervalo máximo de um de 32 bit time_t), e ele não é permitido em todos os em plataformas de 64 bit.

O time passada estrutura será alterado sistema autônomo a seguir, da mesma maneira conforme eles forem alterados com o _mktime funções: the tm_wday and tm_yday campos são conjunto para novos valores com base nos valores de tm_mday and tm_year.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 usa a variável de ambiente TZ para determinar o horário de verão correto.Se não for TZ conjunto, o sistema operacional é consultado para obter o verão regionais correto comportamento em time.tm_isdst é um campo obrigatório.Se não for conjunto, seu valor não está definida e o valor retornado da mktime é imprevisível.

O intervalo do _mkgmtime32 função é de meia-noite, 1 º de janeiro de 1970, UTC para 19 de janeiro, 3: 14: 07, 2038, UTC.O intervalo de _mkgmtime64 é de meia-noite, 1 º de janeiro de 1970 UTC para 23: 59: 59, 31 de dezembro de 3000, UTC. Uma data fora do intervalo resultados em um valor retornado de – 1.O intervalo de _mkgmtime depende _USE_32BIT_TIME_T é definida.Se não definido (padrão) o intervalo é de _mkgmtime64; Caso contrário, o intervalo é limitado a intervalo de 32 bit _mkgmtime32.

Observe que gmtime e localtime Use um único alocados estaticamente buffer para a conversão. Se você fornecer esse buffer para mkgmtime, o Sumário anterior é destruído.

Exemplo

// crt_mkgmtime.c
#include <stdio.h>
#include <time.h>

int main()
{
    struct tm t1, t2;
    time_t now, mytime, gmtime;
    char buff[30];

    time( & now );

    _localtime64_s( &t1, &now );
    _gmtime64_s( &t2, &now );

    mytime = mktime(&t1);
    gmtime = _mkgmtime(&t2);

    printf("Seconds since midnight, January 1, 1970\n");
    printf("My time: %I64d\nGM time (UTC): %I64d\n\n", mytime, gmtime);

    /* Use asctime_s to display these times. */

    _localtime64_s( &t1, &mytime );
    asctime_s( buff, sizeof(buff), &t1 );
    printf( "Local Time: %s\n", buff );

    _gmtime64_s( &t2, &gmtime );
    asctime_s( buff, sizeof(buff), &t2 );
    printf( "Greenwich Mean Time: %s\n", buff );

}

Saída de exemplo

Seconds since midnight, January 1, 1970
My time: 1171588492
GM time (UTC): 1171588492

Local Time: Thu Feb 15 17:14:52 2007

Greenwich Mean Time: Fri Feb 16 01:14:52 2007

O exemplo a seguir mostra como a estrutura incompleta é preenchida com os valores calculados de dia da semana e dia do ano.

// crt_mkgmtime2.c
#include <stdio.h>
#include <time.h>
#include <memory.h>

int main()
{
    struct tm t1, t2;
    time_t gmtime;
    char buff[30];

    memset(&t1, 0, sizeof(struct tm));
    memset(&t2, 0, sizeof(struct tm));

    t1.tm_mon = 1;
    t1.tm_isdst = 0;
    t1.tm_year = 103;
    t1.tm_mday = 12;

    // The day of the week and year will be incorrect in the output here.
    asctime_s( buff, sizeof(buff), &t1);
    printf("Before calling _mkgmtime, t1 = %s t.tm_yday = %d\n",
            buff, t1.tm_yday );

    gmtime = _mkgmtime(&t1);

    // The correct day of the week and year were determined.
    asctime_s( buff, sizeof(buff), &t1);
    printf("After calling _mkgmtime, t1 = %s t.tm_yday = %d\n",
            buff, t1.tm_yday );

}

Saída

Before calling _mkgmtime, t1 = Sun Feb 12 00:00:00 2003
 t.tm_yday = 0
After calling _mkgmtime, t1 = Wed Feb 12 00:00:00 2003
 t.tm_yday = 42

Consulte também

Referência

Gerenciamento de time

asctime, _wasctime

asctime_s, _wasctime_s

gmtime _gmtime32, _gmtime64

_gmtime_s _gmtime32_s, _gmtime64_s

localtime_s _localtime32_s, _localtime64_s

time, _time32, _time64