gmtime, _gmtime32, _gmtime64

time_t Преобразует значение времени в структуруtm. Доступны более безопасные версии этих функций; see gmtime_s, , _gmtime64_s_gmtime32_s.

Синтаксис

struct tm *gmtime( const time_t *sourceTime );
struct tm *_gmtime32( const __time32_t *sourceTime );
struct tm *_gmtime64( const __time64_t *sourceTime );

Параметры

sourceTime
Указатель на хранимое время. Время представляется в виде секунд, истекших после полуночи (00:00:00) 1-го января 1970 года, время в формате UTC.

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

Указатель на структуру типа tm. Поля возвращаемой структуры содержат вычисленное значение аргумента sourceTime в формате UTC, а не по местному времени. Каждое из полей структуры имеет тип int, как описано далее:

Поле Описание
tm_sec Секунды после минуты (0 – 59).
tm_min Минуты после часа (0 – 59).
tm_hour Часы с полуночи (от 0 до 23).
tm_mday День месяца (от 1 до 31).
tm_mon Месяц (0 – 11; Январь = 0).
tm_year Год (текущий год минус 1900).
tm_wday День недели (0 – 6; Воскресенье = 0).
tm_yday День года (0 – 365; 1 января = 0).
tm_isdst Всегда 0 для gmtime.

32- и 64-разрядные версии функций gmtime, mktime, mkgmtime и localtime для преобразования используют одну общую для каждого потока структуру tm. Каждый вызов одной из этих функций уничтожает результат любого предыдущего вызова. Если sourceTime представляет дату перед полночью 1-го января 1970 года, функция gmtime возвращает значение NULL. Ошибка не возвращается.

_gmtime64, который использует структуру __time64_t , позволяет выражать даты до 23:59:59, 31 декабря 3000 г. в формате UTC. _gmtime32 представляет только даты до 23:59:59 18 января 2038 г. в формате UTC. Полночь 1-ого января 1970 года — нижняя граница диапазона дат для обеих функций.

gmtime — это подставляемая функция, эквивалентная функции _gmtime64; функция time_t эквивалентна функции __time64_t, если не определена директива _USE_32BIT_TIME_T. Если необходимо, чтобы компилятор принудительно интерпретировал структуру time_t как старую 32-разрядную структуру time_t, можно определить директиву _USE_32BIT_TIME_T, но это приводит к тому, что функция gmtime подставляется в код как функция _gmtime32, а структура time_t определяется как __time32_t. Мы не рекомендуем использовать _USE_32BIT_TIME_Tее, так как она не разрешена на 64-разрядных платформах. В любом случае приложение может завершиться сбоем после 18 января 2038 г.

Эти функции проверяют свои параметры. Если sourceTime это NULL указатель или sourceTime значение отрицательное, эти функции вызывают обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если выполнение может быть продолжено, эти функции возвращают NULL и устанавливают параметр errno в значение EINVAL.

Комментарии

Функция _gmtime32 разбивает sourceTime значение и сохраняет его в статической выделенной структуре типа tm, определенной в TIME.H. Значение параметра sourceTime обычно получается из вызова функции time.

Примечание

В большинстве случаев целевая среда пытается определить, действует ли летнее время. Библиотека времени выполнения C принимает правила США для реализации проверки на летнее время (DST).

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.

Требования

Подпрограмма Обязательный заголовок C Обязательный заголовок C++
gmtime, _gmtime32, _gmtime64 <time.h> <ctime> или <time.h>

Дополнительные сведения о совместимости см. в разделе Compatibility.

Пример

// crt_gmtime.c
// compile with: /W3
// This program uses _gmtime64 to convert a long-
// integer representation of coordinated universal time
// to a structure named newtime, then uses asctime to
// convert this structure to an output string.

#include <time.h>
#include <stdio.h>

int main(void)
{
   struct tm *newtime;
   __int64 ltime;
   char buff[80];

   _time64( &ltime );

   // Obtain coordinated universal time:
   newtime = _gmtime64( &ltime ); // C4996
   // Note: _gmtime64 is deprecated; consider using _gmtime64_s
   asctime_s( buff, sizeof(buff), newtime );
   printf( "Coordinated universal time is %s\n", buff );
}
Coordinated universal time is Tue Feb 12 23:11:31 2002

См. также раздел

Управление временем
asctime, _wasctime
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_ftime, _ftime32, _ftime64
gmtime_s, _gmtime32_s, _gmtime64_s
localtime, _localtime32, _localtime64
_mkgmtime, _mkgmtime32, _mkgmtime64
mktime, _mktime32, _mktime64
time, _time32, _time64