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( <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
_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