std::asctime
| Definiert im Header <ctime> |
||
| char* asctime( const std::tm* time_ptr ); |
||
Wandelt die angegebene Kalenderzeit std::tm in eine Textdarstellung des folgenden festen 25-Zeichen-Formats um: Www Mmm dd hh:mm:ss yyyy\n.
Www- dreibuchstabige englische Abkürzung des Wochentags aus time_ptr->tm_wday, einer vonMon,Tue,Wed,Thu,Fri,Sat,Sun.Mmm- dreibuchstabige englische Abkürzung des Monatsnamens aus time_ptr->tm_mon, einer vonJan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec.dd- zweistelliger Tag des Monats aus timeptr->tm_mday, als ob er von sprintf mit %2d ausgegeben würde.hh- zweistellige Stunde aus timeptr->tm_hour, als ob sie von sprintf mit %.2d ausgegeben würde.mm- zweistellige Minute aus timeptr->tm_min, als ob sie von sprintf mit %.2d ausgegeben würde.ss- zweistellige Sekunde aus timeptr->tm_sec, als ob sie von sprintf mit %.2d ausgegeben würde.yyyy- vierstellige Jahreszahl aus timeptr->tm_year + 1900, als ob sie von sprintf mit %4d ausgegeben würde.
Das Verhalten ist undefiniert, wenn ein Element 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 Ziffern hat oder kleiner als das Jahr 1000 ist.
Die Funktion unterstützt keine Lokalisierung, und das Zeilenumbruchzeichen kann nicht entfernt werden.
Die Funktion modifiziert statischen Speicher und ist nicht threadsicher.
Inhalt |
[bearbeiten] Parameter
| time_ptr | - | Zeiger auf ein std::tm-Objekt, das die auszugebende Zeit angibt |
[bearbeiten] Rückgabewert
Zeiger auf einen statischen, nullterminierten Zeichenstring, der die Textdarstellung des Datums und der Uhrzeit enthält. Der String kann zwischen std::asctime und std::ctime geteilt werden und kann bei jeder Ausführung einer dieser Funktionen überschrieben werden.
[bearbeiten] Hinweise
Diese Funktion gibt einen Zeiger auf statische Daten zurück und ist nicht threadsicher. POSIX stuft diese Funktion als veraltet ein und empfiehlt stattdessen die lokalitätsabhängige Funktion std::strftime. In std::locale("C") ist die Formatierungszeichenkette "%c\n" für std::strftime eine exakte Übereinstimmung mit der Ausgabe von std::asctime, während in anderen Lokalen die Formatierungszeichenkette "%a %b %e %H:%M:%S %Y\n" eine potenziell engere, aber nicht immer exakte Übereinstimmung darstellt.
POSIX schränkt undefinierte Verhaltensweisen nur auf Fälle ein, in denen der Ausgabestring länger als 25 Zeichen wäre, wenn timeptr->tm_wday oder timeptr->tm_mon außerhalb der erwarteten Bereiche liegen, oder wenn timeptr->tm_year INT_MAX-1990 überschreitet.
Einige Implementierungen behandeln timeptr->tm_mday == 0 als letzter Tag des Vormonats.
[bearbeiten] 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[bearbeiten] 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 (Funktion-Template) |
| C-Dokumentation für asctime
| |