ctime, ctime_s
Определено в заголовочном файле <time.h> | ||
|---|---|---|
char* ctime( const time_t* timer ); | (1) | (до C23) |
[[deprecated]] char* ctime( const time_t* timer ); | (начиная с C23) | |
errno_t ctime_s( char *buf, rsize_t bufsz, const time_t* timer ); | (2) | (начиная с C11) |
1) Преобразует заданное время, прошедшее с начала эпохи, в местное календарное время, а затем в текстовое представление, как если бы была вызвана функция
asctime(localtime(timer)) или asctime(localtime_r(timer, &(struct tm){0}))(начиная с C23). Эта функция устарела и не должна использоваться в новом коде.(начиная с C23)
2) То же, что и (1), за исключением того, что функция эквивалентна
asctime_s(buf, bufsz, localtime_s(timer, &(struct tm){0})), а следующие ошибки обнаруживаются во время выполнения и приводят к вызову установленной в данный момент функции обработчика ограничений: -
bufилиtimerявляется нулевым указателем -
bufszменьше26или большеRSIZE_MAX
-
- Как и для всех функций с проверкой границ,
ctime_sгарантированно доступна только в том случае, если реализация определяет__STDC_LIB_EXT1__, а пользователь задаёт__STDC_WANT_LIB_EXT1__как целочисленную константу1до включения<time.h>.
Полученная строка имеет следующий формат:
Www Mmm dd hh:mm:ss yyyy\n
-
Www— день недели (один изMon,Tue,Wed,Thu,Fri,Sat,Sun). -
Mmm— месяц (один изJan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec). -
dd— день месяца -
hh— часы -
mm— минуты -
ss— секунды -
yyyy— годы
Функция не поддерживает локализацию.
Параметры
| timer | - | указатель на объект time_t, задающий время для вывода |
| buf | - | указатель на первый элемент массива char размером не менее bufsz |
| bufsz | - | максимальное количество байтов для вывода, обычно размер буфера, на который указывает buf |
Возвращаемое значение
1) указатель на статическую строку символов с завершающим нулевым символом, содержащую текстовое представление даты и времени. Строка может быть общей для функций
asctime и ctime и может перезаписываться при каждом вызове любой из этих функций.
2) ноль в случае успеха (в этом случае строковое представление времени записано в массив, на который указывает
buf) или ненулевое значение в случае ошибки (в этом случае завершающий нулевой символ всегда записывается в buf[0], если только buf не является нулевым указателем, а bufsz не равно нулю и не превышает RSIZE_MAX.Примечания
ctime возвращает указатель на статические данные и не является потокобезопасной. Кроме того, она изменяет статический объект tm, который может быть общим для gmtime и localtime. POSIX считает эту функцию устаревшей и рекомендует вместо неё strftime. Стандарт C также рекомендует использовать strftime вместо ctime и ctime_s, поскольку strftime более гибкая и учитывает локаль.
Поведение ctime не определено для значений time_t, при которых строка становится длиннее 25 символов (например, для 10000 года).
Пример
#define __STDC_WANT_LIB_EXT1__ 1
#include <time.h>
#include <stdio.h>
int main(void)
{
time_t result = time(NULL);
printf("%s", ctime(&result));
#ifdef __STDC_LIB_EXT1__
char str[26];
ctime_s(str,sizeof str,&result);
printf("%s", str);
#endif
}
Возможный вывод:
Tue May 26 21:51:03 2015 Tue May 26 21:51:03 2015
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.27.3.2 Функция ctime (с. 287–288)
- K.3.8.2.2 Функция ctime_s (с. 454)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.27.3.2 Функция ctime (с. 393)
- K.3.8.2.2 Функция ctime_s (с. 626)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.23.3.2 Функция ctime (с. 342)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.12.3.2 Функция ctime
См. также
|
(устарела в C23)(C11) | преобразует объект tm в текстовое представление (функция) |
преобразует объект tm в пользовательское текстовое представление (функция) |
|
Документация по C++ для ctime |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/chrono/ctime