Поделиться через


gmtime_s, , _gmtime32_s_gmtime64_s

Преобразует значение времени в структуру tm . Эти функции — это версии с улучшениями безопасности, _gmtime64как описано в функциях безопасности в CRT._gmtime32

Синтаксис

errno_t gmtime_s(
   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 — встраиваемая функция, которая принимает значение _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.

Требования

Маршрут Обязательный заголовок 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( &ltime );

   // Obtain coordinated universal time:
   err = _gmtime64_s( &newtime, &ltime );
   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_wctime_ctime64_wctime32,_wctime64
_ftime, , _ftime32_ftime64
gmtime, , _gmtime32_gmtime64
localtime_s, , _localtime32_s_localtime64_s
_mkgmtime, , _mkgmtime32_mkgmtime64
mktime, , _mktime32_mktime64
time, , _time32_time64