std:: asctime
|
Определено в заголовочном файле
<ctime>
|
||
|
char
*
asctime
(
const
std::
tm
*
time_ptr
)
;
|
||
Преобразует заданное календарное время std::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.
Функция не поддерживает локализацию, и символ новой строки не может быть удален.
Функция изменяет статическое хранилище и не является потокобезопасной.
Содержание |
Параметры
| time_ptr | - | указатель на объект std::tm , определяющий время для вывода |
Возвращаемое значение
Указатель на статическую строку символов, завершающуюся нулевым символом, содержащую текстовое представление даты и времени. Строка может быть общей для
std::asctime
и
std::ctime
и может перезаписываться при каждом вызове любой из этих функций.
Примечания
Эта функция возвращает указатель на статические данные и не является потокобезопасной. POSIX помечает эту функцию устаревшей и рекомендует использовать зависящую от локали
std::strftime
вместо нее. В
std::locale
("C")
строка формата
std::strftime
"%c
\n
"
будет точным соответствием выводу
std::asctime
, тогда как в других локалях строка формата
"%a %b %e %H:%M:%S %Y
\n
"
будет потенциально более близким, но не всегда точным соответствием.
POSIX ограничивает неопределённое поведение только случаями, когда выходная строка превышает 25 символов, когда
timeptr->tm_wday
или
timeptr->tm_mon
находятся вне ожидаемых диапазонов, или когда
timeptr->tm_year
превышает
INT_MAX
-
1990
.
Некоторые реализации обрабатывают timeptr - > tm_mday == 0 как обозначение последнего дня предыдущего месяца.
Пример
#include <ctime> #include <iomanip> #include <iostream> int main() { const std::time_t now = std::time(nullptr); for (const char* localeName : {"C", "en_US.utf8", "de_DE.utf8", "ja_JP.utf8"}) { std::cout << "locale " << localeName << ":\n" << std::left; std::locale::global(std::locale(localeName)); std::cout << std::setw(40) << " asctime" << std::asctime(std::localtime(&now)); // strftime output for comparison: char buf[64]; if (strftime(buf, sizeof buf, "%c\n", std::localtime(&now))) std::cout << std::setw(40) << " strftime %c" << buf; if (strftime(buf, sizeof buf, "%a %b %e %H:%M:%S %Y\n", std::localtime(&now))) std::cout << std::setw(40) << " strftime %a %b %e %H:%M:%S %Y" << buf; std::cout << '\n'; } }
Возможный вывод:
locale C:
asctime Wed Nov 4 00:45:01 2020
strftime %c Wed Nov 4 00:45:01 2020
strftime %a %b %e %H:%M:%S %Y Wed Nov 4 00:45:01 2020
locale en_US.utf8:
asctime Wed Nov 4 00:45:01 2020
strftime %c Wed 04 Nov 2020 12:45:01 AM UTC
strftime %a %b %e %H:%M:%S %Y Wed Nov 4 00:45:01 2020
locale de_DE.utf8:
asctime Wed Nov 4 00:45:01 2020
strftime %c Mi 04 Nov 2020 00:45:01 UTC
strftime %a %b %e %H:%M:%S %Y Mi Nov 4 00:45:01 2020
locale ja_JP.utf8:
asctime Wed Nov 4 00:45:01 2020
strftime %c 2020年11月04日 00時45分01秒
strftime %a %b %e %H:%M:%S %Y 水 11月 4 00:45:01 2020
Смотрите также
|
преобразует объект
std::time_t
в текстовое представление
(функция) |
|
|
преобразует объект
std::tm
в пользовательское текстовое представление
(функция) |
|
|
(C++11)
|
форматирует и выводит значение даты/времени согласно указанному формату
(шаблон функции) |
|
Документация C
для
asctime
|
|