_mkgmtime, _mkgmtime32, _mkgmtime64

Преобразует время в формате UTC, представленное tmstruct относительно времени в формате UTC, представленный типом time_t .

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

Параметры

  • timeptr
    Указатель относительно времени в формате UTC, как structtm преобразования.

Возвращаемое значение

Число типа __time32_t или __time64_t , представляющее число секунд, прошедшего с полуночи 1-е января 1970, в формате UTC.Если дата находится вне диапазона (см. раздел примeчаний) или вход не может быть интерпретировано как допустимого времени, возвращаемое значение – 1.

Заметки

Функции _mkgmtime32 и _mkgmtime64 преобразуют время в формате UTC в __time32_t или тип для представления __time64_t время в формате UTC.Для преобразования местного времени относительно времени в формате UTC, используйте mktime, _mktime32и _mktime64 .

_mkgmtime встроенная функция, результатом которого является _mkgmtime64и time_t эквивалентно __time64_t.Если необходимо принудительно компилятора интерпретировать как старое time_tпакетом обновления 32 (sp2 time_t, то можно указать _USE_32BIT_TIME_T.Это не рекомендуется, поскольку приложение может завершиться с ошибкой после 19-ого января 2038 (максимальное расстояние time_t32 (sp2) и не разрешено на всех платформах на 64.

Структура времени прошла внутри изменяется следующим образом, точно так же, как они изменяются с функциями _mktime : поля tm_wday и tm_yday набор и новых значений, основываясь на значениях tm_mday и tm_year.При указании время структурирования tm , установите поле tm_isdst :

  • Ноль (0) для указания того, что действует стандартное время.

  • Значение больше 0 для указания того, что летнее время.

  • Значение меньше нуля, чтобы иметь compute кода библиотеки времени выполнения языка c, является ли стандартное или летнее время.

Библиотека времени выполнения c использует переменную среды TZ, чтобы указать нужное время сохранения дневного света.Если TZ не установлен, то операционная система для получения правильной регионарную расширения функциональности времени сохранения дневного света.tm_isdst обязательное поле.Если оно не задано, и его значение не определен, то возвращаемое значение из mktime непрогнозируемо.

Диапазон функций _mkgmtime32 от полуночи 1-е января 1970, в формате UTC для 19-е,3 января.: 14:07, 2038, время в формате UTC.Диапазон _mkgmtime64 от полуночи 1-е января 1970, в формате UTC 23:59: 59 - 31-е декабря 3000, в формате UTC.Результаты с датами вне диапазона в возвращаемое значение – 1.Расстояние от которых зависит _mkgmtime , задано ли значение _USE_32BIT_TIME_T .Если не задан (по умолчанию) диапазон из _mkgmtime64; в противном случае диапазон ограничено диапазоном _mkgmtime3232 (sp2).

Обратите внимание, что gmtime используют один и localtime статически выделенный буфер для преобразования.Если ввести этот буфер в mkgmtime, прежнее содержимое уничтожены.

Пример

// 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 );

}

Пример результатов выполнения

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

В следующем примере показано, как неполную структура заполнянна с расчетными значениями дня недели и дня года.

// 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 );

}

Output

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

См. также

Ссылки

Управление временем

asctime, _wasctime

asctime_s, _wasctime_s

gmtime, _gmtime32, _gmtime64

gmtime_s, _gmtime32_s, _gmtime64_s

localtime_s, _localtime32_s, _localtime64_s

mktime, _mktime32, _mktime64

time, _time32, _time64