Namespaces
Variants

std:: asctime

From cppreference.net
< cpp ‎ | chrono ‎ | c
Определено в заголовочном файле <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)
форматирует и выводит значение даты/времени согласно указанному формату
(шаблон функции)