Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Преобразует значение времени в структуру tm . Эти функции — это версии _gmtime32_gmtime64как описано в функциях безопасности в CRT.
Синтаксис
errno_t gmtime_s( // See note in remarks section about linkage
struct tm* tmDest,
const __time_t* sourceTime
);
errno_t _gmtime32_s(
struct tm* tmDest,
const __time32_t* sourceTime
);
errno_t _gmtime64_s(
struct tm* tmDest,
const __time64_t* sourceTime
);
Параметры
tmDest
Указатель на структуру tm. Поля возвращаемой структуры содержат вычисленное значение аргумента timer в формате UTC, а не по местному времени.
sourceTime
Указатель на сохраненное время. Время представляется в виде секунд, истекших после полуночи (00:00:00) 1-го января 1970 года, время в формате UTC.
Возвращаемое значение
Нуль при успешном завершении. Возвращаемое значение — это код ошибки, если произошел сбой. Коды ошибок определены в Errno.h; для перечисления этих ошибок см. в разделе errno.
Условия ошибок
tmDest |
sourceTime |
Возврат | Значение в tmDest |
|---|---|---|---|
NULL |
любое | EINVAL |
Не изменено. |
Не NULL (указывает на допустимый адрес в памяти) |
NULL |
EINVAL |
Во всех полях заданы значения –1. |
Не NULL |
< 0 | EINVAL |
Во всех полях заданы значения –1. |
Первые два условия ошибки вызывают обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если выполнение может быть продолжено, эти функции устанавливают параметр errno в значение EINVAL и возвращают значение EINVAL.
Замечания
Функция _gmtime32_s разбивает sourceTime значение и сохраняет его в структуре типа tm, определенной в Time.h. Адрес структуры передается в параметре tmDest. Значение sourceTime часто получается из вызова time функции.
Каждое из полей структуры имеет тип int, как показано в следующей таблице.
| Поле | Description |
|---|---|
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_s. |
Функция _gmtime64_s, которая использует структуру __time64_t, поддерживает даты до 23:59:59 31 декабря 3000 года в формате UTC; при этом функция gmtime32_s представляет даты только до 23:59:59 18 января 2038 года в формате UTC. Полночь 1-го января 1970 года — нижняя граница диапазона дат для обеих функций.
У конкретной корпорации gmtime_s Майкрософт есть подпись, отличная от стандартной версии C. Чтобы включить стандартный вариант, определите _CRT_USE_CONFORMING_ANNEX_K_TIME ненулевое значение перед включением <time.h>.
gmtime_s — встраиваемая функция, которая принимает значение _gmtime64_s, и time_t эквивалентна __time64_t. Если необходимо, чтобы компилятор принудительно интерпретировал time_t как старое 32-разрядное значение time_t, можно определить _USE_32BIT_TIME_T.
_USE_32BIT_TIME_T вызывает gmtime_s встраивать как _gmtime32_s. Мы не рекомендуем _USE_32BIT_TIME_T, так как ваше приложение может завершиться сбоем после 18 января 2038 г., и так как оно не разрешено на 64-разрядных платформах.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Замечание
При использовании пакета SDK для Windows версии 10.0.26100.6901 и Visual Studio 2026 или более поздней версии больше gmtime_s не static inline будет (внутренняя компоновка). Вместо этого это inline (внешняя компоновка).
Чтобы вернуться к предыдущему поведению, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 прежде чем включать любые заголовки CRT. По умолчанию параметр _STATIC_INLINE_UCRT_FUNCTIONS имеет значение 0.
Это изменение повышает соответствие UCRT стандарту C++ и улучшает совместимость с модулями C++.
Требования
| Маршрут | Обязательный заголовок C | Обязательный заголовок C++ |
|---|---|---|
gmtime_s, , _gmtime32_s_gmtime64_s |
<time.h> |
<ctime> или <time.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_gmtime64_s.c
// This program uses _gmtime64_s to convert a 64-bit
// integer representation of coordinated universal time
// to a structure named newtime, then uses asctime_s to
// convert this structure to an output string.
#include <time.h>
#include <stdio.h>
int main( void )
{
struct tm newtime;
__int64 ltime;
char buf[26];
errno_t err;
_time64( <ime );
// Obtain coordinated universal time:
err = _gmtime64_s( &newtime, <ime );
if (err)
{
printf("Invalid Argument to _gmtime64_s.");
}
// Convert to an ASCII representation
err = asctime_s(buf, 26, &newtime);
if (err)
{
printf("Invalid Argument to asctime_s.");
}
printf( "Coordinated universal time is %s\n",
buf );
}
Coordinated universal time is Fri Apr 25 20:12:33 2003
См. также
Управление временем
asctime_s, _wasctime_s
ctime, , _ctime32_ctime64_wctime_wctime32,_wctime64
_ftime, , _ftime32_ftime64
gmtime, , _gmtime32_gmtime64
localtime_s, , _localtime32_s_localtime64_s
_mkgmtime, , _mkgmtime32_mkgmtime64
mktime, , _mktime32_mktime64
time, , _time32_time64