asctime, asctime_s
Определено в заголовочном файле <time.h> | ||
|---|---|---|
char* asctime( const struct tm* time_ptr ); | (1) | (до C23) |
[[deprecated]] char* asctime( const struct tm* time_ptr ); | (начиная с C23) | |
errno_t asctime_s( char* buf, rsize_t bufsz, const struct tm* time_ptr ); | (2) | (начиная с C11) |
tm в текстовое представление следующего фиксированного формата длиной 25 символов: Www Mmm dd hh:mm:ss yyyy\n -
Www— английское сокращённое название дня недели изtime_ptr->tm_wday, одно изMon,Tue,Wed,Thu,Fri,Sat,Sun. -
Mmm— английское сокращённое название месяца изtime_ptr->tm_mon, одно изJan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec. -
dd— двузначное число месяца изtimeptr->tm_mday, как если бы оно было напечатано функциейsprintfс использованием%2d. -
hh— двузначное значение часа изtimeptr->tm_hour, как если бы оно было напечатано функциейsprintfс использованием%.2d. -
mm— двузначное значение минут изtimeptr->tm_min, как если бы оно было напечатано функциейsprintfс использованием%.2d. -
ss— двузначное значение секунд изtimeptr->tm_sec, как если бы оно было напечатано функциейsprintfс использованием%.2d. -
yyyy— четырёхзначный год изtimeptr->tm_year + 1900, как если бы он был напечатан функциейsprintfс использованием%4d.
*time_ptr находится вне своего допустимого диапазона.time_ptr->tm_year, содержит более 4 цифр или меньше 1000.| Эта функция объявлена устаревшей и не должна использоваться в новом коде. | (начиная с C23) |
buf, для которой гарантируется завершение нулевым символом, а во время выполнения обнаруживаются следующие ошибки, после чего вызывается установленная в данный момент функция обработчика ограничений: -
bufилиtime_ptrявляется нулевым указателем -
bufszменьше 26 или большеRSIZE_MAX - не все поля
*time_ptrнаходятся в допустимых диапазонах - год, указанный в
time_ptr->tm_year, меньше 0 или больше 9999.
-
- Как и для всех функций с проверкой границ,
asctime_sгарантированно доступна только в том случае, если реализация определяет__STDC_LIB_EXT1__и если пользователь определяет__STDC_WANT_LIB_EXT1__как целочисленную константу1до включения<time.h>.
Параметры
| time_ptr | - | указатель на объект tm, задающий время для вывода |
| buf | - | указатель на предоставленный пользователем буфер длиной не менее 26 байт |
| bufsz | - | размер предоставленного пользователем буфера |
Возвращаемое значение
asctime и ctime и может перезаписываться при каждом вызове любой из этих функций.buf[0] устанавливается в ноль (если только buf не является нулевым указателем, а bufsz не равно нулю или не превышает RSIZE_MAX).Примечания
asctime возвращает указатель на статические данные и не является потокобезопасной. POSIX объявляет эту функцию устаревшей и рекомендует вместо неё использовать strftime. Стандарт C также рекомендует использовать strftime вместо asctime и asctime_s, поскольку strftime более гибкая и учитывает локаль.
POSIX ограничивает неопределённое поведение случаями, когда выходная строка содержит более 25 символов, когда timeptr->tm_wday или timeptr->tm_mon не входят в ожидаемые диапазоны или когда timeptr->tm_year превышает INT_MAX - 1990.
Некоторые реализации обрабатывают timeptr->tm_mday == 0 как обозначение последнего дня предыдущего месяца.
Пример
#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
#include <time.h>
int main(void)
{
struct tm tm = *localtime(&(time_t){time(NULL)});
printf("%s", asctime(&tm)); // note implicit trailing '\n'
#ifdef __STDC_LIB_EXT1__
char str[26];
asctime_s(str, sizeof str, &tm);
printf("%s", str);
#endif
}
Возможный вывод:
Tue May 26 21:51:50 2015 Tue May 26 21:51:50 2015
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.27.2.1 Функция asctime (стр. 287)
- K.3.8.2.1 Функция asctime_s (стр. 453–454)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.27.2.1 Функция asctime (стр. 392–393)
- K.3.8.2.1 Функция asctime_s (стр. 624–625)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.23.3.1 Функция asctime (стр. 341–342)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.12.3.1 Функция asctime
См. также
|
(устарела в C23)(C11) | преобразует объект time_t в текстовое представление (функция) |
преобразует объект tm в пользовательское текстовое представление (функция) |
|
Документация по C++ для asctime |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/chrono/asctime