Namespaces
Variants

std:: asctime

From cppreference.net
< cpp ‎ | chrono ‎ | c
Definiert in Header <ctime>
char * asctime ( const std:: tm * time_ptr ) ;

Wandelt die gegebene Kalenderzeit std::tm in eine textuelle Darstellung des folgenden festen 25-Zeichen-Formats um: Www Mmm dd hh : mm : ss yyyy\n .

  • Www - dreistellige englische Abkürzung des Wochentags aus time_ptr - > tm_wday , einer von Mon , Tue , Wed , Thu , Fri , Sat , Sun .
  • Mmm - dreistellige englische Abkürzung des Monatsnamens aus time_ptr - > tm_mon , einer von Jan , Feb , Mar , Apr , May , Jun , Jul , Aug , Sep , Oct , Nov , Dec .
  • dd - 2-stelliger Tag des Monats aus timeptr - > tm_mday , als ob ausgegeben durch sprintf mit % 2d .
  • hh - 2-stellige Stunde aus timeptr - > tm_hour , als ob ausgegeben durch sprintf mit % .2d .
  • mm - 2-stellige Minute aus timeptr - > tm_min , als ob ausgegeben durch sprintf mit % .2d .
  • ss - 2-stellige Sekunde aus timeptr - > tm_sec , als ob ausgegeben durch sprintf mit % .2d .
  • yyyy - 4-stelliges Jahr aus timeptr - > tm_year + 1900 , als ob ausgegeben durch sprintf mit % 4d .

Das Verhalten ist undefiniert, falls ein beliebiges Mitglied von * time_ptr außerhalb seines normalen Bereichs liegt.

Das Verhalten ist undefiniert, wenn das durch time_ptr - > tm_year angegebene Kalenderjahr mehr als 4 Stellen hat oder kleiner als das Jahr 1000 ist.

Die Funktion unterstützt keine Lokalisierung und das Zeilenumbruchzeichen kann nicht entfernt werden.

Die Funktion ändert statischen Speicher und ist nicht threadsicher.

Inhaltsverzeichnis

Parameter

time_ptr - Zeiger auf ein std::tm Objekt, das die auszugebende Zeit spezifiziert

Rückgabewert

Zeiger auf eine statische nullterminierte Zeichenkette, die die textuelle Darstellung von Datum und Uhrzeit enthält. Die Zeichenkette kann zwischen std::asctime und std::ctime geteilt werden und kann bei jedem Aufruf einer dieser Funktionen überschrieben werden.

Hinweise

Diese Funktion gibt einen Zeiger auf statische Daten zurück und ist nicht threadsicher. POSIX markiert diese Funktion als veraltet und empfiehlt stattdessen die lokalisierungsabhängige std::strftime . Im std::locale ("C") wird der std::strftime -Formatstring "%c \n " exakt mit der Ausgabe von std::asctime übereinstimmen, während in anderen Locales der Formatstring "%a %b %e %H:%M:%S %Y \n " eine potenziell bessere, aber nicht immer exakte Übereinstimmung darstellt.

POSIX beschränkt undefiniertes Verhalten nur auf die Fälle, wenn die Ausgabezeichenkette länger als 25 Zeichen wäre, wenn timeptr->tm_wday oder timeptr->tm_mon nicht innerhalb der erwarteten Bereiche liegen, oder wenn timeptr->tm_year den Wert von INT_MAX - 1990 überschreitet.

Einige Implementierungen behandeln timeptr - > tm_mday == 0 als Bedeutung des letzten Tages des vorhergehenden Monats.

Beispiel

#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';
    }
}

Mögliche Ausgabe:

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

Siehe auch

konvertiert ein std::time_t Objekt in eine textuelle Darstellung
(Funktion)
konvertiert ein std::tm Objekt in eine benutzerdefinierte textuelle Darstellung
(Funktion)
(C++11)
formatiert und gibt einen Datums-/Zeitwert gemäß dem angegebenen Format aus
(Funktions-Template)
C-Dokumentation für asctime