ctime, ctime_s
Определено в заголовочном файле <time.h> |
||
|---|---|---|
| (1) | ||
char* ctime( const time_t* timer ); |
(до 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— указатель null -
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 | - | указатель на первый элемент массива символов размером как минимум bufsz |
| bufsz | - | максимальное количество байтов для вывода, обычно размер буфера, на который указывает buf |
Значение результата
1) указатель на статическую завершаемую нулём строку символов, содержащую текстовое представление даты и времени. Строка может быть общей для
asctime и ctime, и может перезаписываться при каждом вызове любой из этих функций.
2) ноль в случае успеха (в этом случае строковое представление времени было записано в массив, на который указывает
buf), или ненулевое значение в случае неудачи (в этом случае завершающий нулевой символ всегда записывается в buf[0] за исключением случаев, когда buf — указатель null или 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/w/c/chrono/ctime