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( <ime );
// Obtain coordinated universal time:
newtime = _gmtime64( <ime ); // 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