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") строка формата "%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 |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/chrono/c/asctime