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


gmtime_s, _gmtime32_s, _gmtime64_s

Преобразует значение времени в структуру. Здесь представлены версии _gmtime32, _gmtime64 с усовершенствованной безопасностью, как описано в разделе Функции безопасности в CRT.

errno_t gmtime_s(
   struct tm* _tm,
   const __time_t* time
);
errno_t _gmtime32_s(
   struct tm* _tm,
   const __time32_t* time
);
errno_t _gmtime64_s(
   struct tm* _tm,
   const __time64_t* time 
);

Параметры

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

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

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

Ноль, если успешно. Возвращаемое значение — код ошибки в случае сбоя. Коды ошибок определены в Errno.h; список этих ошибок см. в разделе errno.

Условия возникновения ошибки

_tm

time

Return

Значение в _tm

NULL

any

EINVAL

Без изменений.

Не NULL (указывает на допустимый адрес памяти)

NULL

EINVAL

Все поля равны -1.

Не NULL

< 0

EINVAL

Все поля равны -1.

В случае первых двух условий ошибки, вызывается обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если продолжение выполнения разрешено, эти функции устанавливают для errno значение EINVAL и возвращают EINVAL.

Заметки

Функция _gmtime32_s разбирает значение time и сохраняет его в структуре типа tm, определенной в Time.h. Адрес структуры передается в _tm. Значение time обычно получается из вызова функции time.

Примечание

Среда целевого объекта должна попытаться определить, действует ли летнее время.Библиотека времени выполнения C принимает правила Соединенных Штатов для реализации проверки на летнее время.

Каждое из полей структуры имеет тип 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.

Функция _gmtime64_s, которая использует структуру __time64_t, разрешает даты до 23:59:59, 31-е декабря 3000, UTC; тогда как gmtime32_s представляет даты только до 03:14:07, 19-января 2038, UTC. Полночь 1-ого января 1970 года - нижняя граница диапазона дат для обеих функций.

gmtime_s — встроенная функция, которая принимает значение _gmtime64_s и time_t эквивалентна __time64_t. Если необходимо обеспечить интерпретацию компилятором time_t как старого 32-битного time_t, можно определить _USE_32BIT_TIME_T. Это приведет к выравниваю gmtime_s в _gmtime32_s. Это не рекомендуется, поскольку приложение может завершиться с ошибкой после 18-ого января 2038 и не поддерживается на 64 разрядных платформах.

Требования

Подпрограмма

Обязательный заголовок

gmtime_s

<time.h>

_gmtime32_s

<time.h>

_gmtime64_s

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

Эквивалент в .NET Framework

См. также

Ссылки

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

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