localtime, localtime_r, localtime_s
|
Определено в заголовочном файле
<time.h>
|
||
| (1) | ||
| (2) | (начиная с C23) | |
| (3) | (начиная с C11) | |
struct tm
. Результат сохраняется в статической памяти, и возвращается указатель на эту статическую область памяти.
-
- timer или buf являются нулевыми указателями
-
Как и все функции с проверкой границ,
localtime_sгарантированно доступна только если __STDC_LIB_EXT1__ определено реализацией и если пользователь определяет __STDC_WANT_LIB_EXT1__ как целочисленную константу 1 до включения <time.h> .
Содержание |
Параметры
| timer | - | указатель на объект time_t для преобразования |
| buf | - | указатель на объект struct tm для хранения результата |
Возвращаемое значение
localtime
, и
ctime
и может перезаписываться при каждом вызове.
Примечания
Функция
localtime
может быть не потокобезопасной. Реализация в
Microsoft CRT
является потокобезопасной.
POSIX требует, чтобы
localtime
и
localtime_r
устанавливали
errno
в значение
EOVERFLOW
при неудаче из-за слишком большого значения аргумента.
POSIX определяет
, что информация о часовом поясе определяется функциями
localtime
и
localtime_r
таким образом, как если бы они вызывали
tzset
, которая считывает переменную окружения
TZ
.
Реализация функции
localtime_s
в
Microsoft CRT
несовместима со стандартом C, поскольку имеет обратный порядок параметров и возвращает
errno_t
.
Пример
#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-specific 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.4 Функция localtime (стр.: TBD)
-
- K.3.8.2.4 Функция localtime_s (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.27.3.4 Функция localtime (стр: 288)
-
- K.3.8.2.4 Функция localtime_s (стр: 455)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.27.3.4 Функция localtime (стр: 394)
-
- K.3.8.2.4 Функция localtime_s (стр: 627)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.23.3.4 Функция localtime (стр. 343)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
-
- 4.12.3.4 Функция localtime
Смотрите также
|
(C23)
(C11)
|
преобразует время с начала эпохи в календарное время, выраженное в формате Всемирного координированного времени (UTC)
(функция) |
|
Документация C++
для
localtime
|
|