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 с использованием%2dhh- двузначный час изtimeptr->tm_hour, как если бы он был напечатан sprintf с использованием%.2dmm- двузначные минуты изtimeptr->tm_min, как если бы они были напечатаны sprintf с использованием%.2dss- двузначные секунды изtimeptr->tm_sec, как если бы они были напечатаны sprintf с использованием%.2dyyyy- 4-значный год из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 << "локаль " << localeName << ":\n" << std::left;
std::locale::global(std::locale(localeName));
std::cout << std::setw(40) << " asctime" << std::asctime(std::localtime(&now));
// вывод strftime для сравнения:
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';
}
}
Возможный вывод:
локаль 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
локаль 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
локаль 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
локаль 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
| |