gmtime, gmtime_r, gmtime_s
From cppreference.net
|
Определено в заголовочном файле
<time.h>
|
||
| (1) | ||
| (2) | (начиная с C23) | |
| (3) | (начиная с C11) | |
1)
Преобразует заданное время с начала эпохи (значение
time_t
, на которое указывает
timer
) в календарное время, выраженное в формате UTC (Всемирное координированное время) в виде
struct tm
. Результат сохраняется в статической памяти, и возвращается указатель на эту статическую область памяти.
2)
То же, что и
(1)
, за исключением того, что функция использует предоставленное пользователем хранилище
buf
для результата.
3)
Аналогично
(1)
, за исключением того, что функция использует предоставленное пользователем хранилище
buf
для результата, и следующие ошибки обнаруживаются во время выполнения и вызывают текущую установленную
функцию обработки ограничений
:
-
- timer или buf является нулевым указателем
-
Как и все функции с проверкой границ,
gmtime_sгарантированно доступна только если __STDC_LIB_EXT1__ определено реализацией и если пользователь определяет __STDC_WANT_LIB_EXT1__ как целочисленную константу 1 перед включением <time.h> .
Содержание |
Параметры
| timer | - | указатель на объект time_t для преобразования |
| buf | - | указатель на объект struct tm для хранения результата |
Возвращаемое значение
1)
указатель на статический внутренний
tm
объект при успехе, или нулевой указатель в противном случае. Структура может использоваться совместно
gmtime
,
localtime
, и
ctime
и может перезаписываться при каждом вызове.
2,3)
копия указателя
buf
, или нулевой указатель при ошибке (что может быть нарушением ограничения времени выполнения или неудачей преобразования указанного времени в UTC).
Примечания
gmtime
может быть не потокобезопасной.
POSIX требует, чтобы
gmtime
и
gmtime_r
устанавливали
errno
в значение
EOVERFLOW
при неудачном выполнении из-за слишком большого аргумента.
Реализация функции
gmtime_s
в
Microsoft CRT
несовместима со стандартом C, поскольку в ней изменён порядок параметров.
Пример
Запустить этот код
#define __STDC_WANT_LIB_EXT1__ 1 #define _XOPEN_SOURCE // for putenv #include <stdio.h> #include <stdlib.h> // for putenv #include <time.h> int main(void) { time_t t = time(NULL); printf("UTC: %s", asctime(gmtime(&t))); printf("local: %s", asctime(localtime(&t))); // специфично для POSIX putenv("TZ=Asia/Singapore"); printf("Singapore: %s", asctime(localtime(&t))); #ifdef __STDC_LIB_EXT1__ struct tm buf; char str[26]; asctime_s(str, sizeof str, gmtime_s(&t, &buf)); printf("UTC: %s", str); asctime_s(str, sizeof str, localtime_s(&t, &buf)); printf("local: %s", str); #endif }
Возможный вывод:
UTC: Fri Sep 15 14:22:05 2017 local: Fri Sep 15 14:22:05 2017 Singapore: Fri Sep 15 22:22:05 2017 UTC: Fri Sep 15 14:22:05 2017 local: Fri Sep 15 14:22:05 2017
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 7.27.3.3 Функция gmtime (стр.: TBD)
-
- K.3.8.2.3 Функция gmtime_s (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.27.3.3 Функция gmtime (стр: 288)
-
- K.3.8.2.3 Функция gmtime_s (стр: 454-455)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.27.3.3 Функция gmtime (стр: 393-394)
-
- K.3.8.2.3 Функция gmtime_s (стр: 626-627)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.23.3.3 Функция gmtime (стр: 343)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
-
- 4.12.3.3 Функция gmtime
Смотрите также
|
(C23)
(C11)
|
преобразует время с начала эпохи в календарное время, выраженное как локальное время
(функция) |
|
Документация C++
для
gmtime
|
|