Date and time library
C++ beinhaltet Unterstützung für zwei Arten der Zeitmanipulation:
- Die Chrono-Bibliothek , eine flexible Sammlung von Typen, die Zeit mit unterschiedlichen Genauigkeitsgraden verfolgen (z.B. std::chrono::time_point ).
- C-Stil Datums- und Zeitbibliothek (z.B. std::time ).
Inhaltsverzeichnis |
Chrono-Bibliothek (seit C++11)
Die
chrono
-Bibliothek definiert mehrere Haupttypen sowie Hilfsfunktionen und gebräuchliche Typdefinitionen:
| (seit C++20) |
Uhren
Eine Uhr besteht aus einem Startpunkt (oder Epoche) und einer Taktfrequenz. Beispielsweise kann eine Uhr eine Epoche von 1. Januar 1970 haben und jede Sekunde takten. C++ definiert mehrere Clock-Typen:
|
Definiert in Header
<chrono>
|
|
|
Definiert in Namespace
std::chrono
|
|
|
(C++11)
|
Wanduhrzeit von der systemweiten Echtzeituhr
(Klasse) |
|
(C++11)
|
monotone Uhr, die nie angepasst wird
(Klasse) |
|
(C++11)
|
die Uhr mit der kürzesten verfügbaren Taktperiode
(Klasse) |
|
(C++20)
|
bestimmt, ob ein Typ eine
Clock
ist
(Klassentemplate) (Variablentemplate) |
|
(C++20)
|
Clock
für Koordinierte Weltzeit (UTC)
(Klasse) |
|
(C++20)
|
Clock
für Internationale Atomzeit (TAI)
(Klasse) |
|
(C++20)
|
Clock
für GPS-Zeit
(Klasse) |
|
(C++20)
|
Clock
verwendet für
Dateizeit
(Typedef) |
|
(C++20)
|
Pseudouhr, die die lokale Zeit repräsentiert
(Klasse) |
Zeitpunkt
Ein Zeitpunkt ist eine Zeitspanne, die seit der Epoche einer bestimmten Uhr vergangen ist.
|
Definiert im Header
<chrono>
|
|
|
Definiert im Namensraum
std::chrono
|
|
|
(C++11)
|
ein Zeitpunkt
(Klassentemplate) |
|
(C++20)
|
Eigenschaftsklasse, die definiert, wie Zeitpunkte einer Uhr in eine andere konvertiert werden
(Klassentemplate) |
|
(C++20)
|
konvertiert Zeitpunkte einer Uhr in eine andere
(Funktionstemplate) |
Dauer
Eine Dauer besteht aus einem Zeitraum, definiert als eine bestimmte Anzahl von Ticks einer Zeiteinheit. Zum Beispiel könnte "42 Sekunden" durch eine Dauer dargestellt werden, die aus 42 Ticks einer 1-Sekunden-Zeiteinheit besteht.
|
Definiert im Header
<chrono>
|
|
|
Definiert im Namensraum
std::chrono
|
|
|
(C++11)
|
ein Zeitintervall
(Klassentemplate) |
Tageszeit (seit C++20)
hh_mm_ss
unterteilt eine Dauer, die die seit Mitternacht verstrichene Zeit darstellt, in Stunden, Minuten, Sekunden und gegebenenfalls Bruchteile von Sekunden. Es handelt sich primär um ein Formatierungswerkzeug.
|
Definiert im Header
<chrono>
|
|
|
Definiert im Namespace
std::chrono
|
|
|
(C++20)
|
repräsentiert eine Tageszeit
(Klassentemplate) |
|
(C++20)
|
übersetzt zwischen einem 12h/24h-Format der Tageszeit
(Funktion) |
Kalender (seit C++20)
|
Definiert im Header
<chrono>
|
|
|
Definiert in namespace
std::chrono
|
|
|
(C++20)
|
Tag-Klasse, die den
letzten
Tag oder Wochentag in einem Monat angibt
(Klasse) |
|
(C++20)
|
repräsentiert einen Tag eines Monats
(Klasse) |
|
(C++20)
|
repräsentiert einen Monat eines Jahres
(Klasse) |
|
(C++20)
|
repräsentiert ein Jahr im gregorianischen Kalender
(Klasse) |
|
(C++20)
|
repräsentiert einen Wochentag im gregorianischen Kalender
(Klasse) |
|
(C++20)
|
repräsentiert den n
ten
weekday
eines Monats
(Klasse) |
|
(C++20)
|
repräsentiert den letzten
weekday
eines Monats
(Klasse) |
|
(C++20)
|
repräsentiert einen bestimmten
day
eines bestimmten
month
(Klasse) |
|
(C++20)
|
repräsentiert den letzten Tag eines bestimmten
month
(Klasse) |
|
(C++20)
|
repräsentiert den n
ten
weekday
eines bestimmten
month
(Klasse) |
|
(C++20)
|
repräsentiert den letzten
weekday
eines bestimmten
month
(Klasse) |
|
(C++20)
|
repräsentiert einen bestimmten
month
eines bestimmten
year
(Klasse) |
|
(C++20)
|
repräsentiert ein bestimmtes
year
,
month
und
day
(Klasse) |
|
(C++20)
|
repräsentiert den letzten Tag eines bestimmten
year
und
month
(Klasse) |
|
(C++20)
|
repräsentiert den n
ten
weekday
eines bestimmten
year
und
month
(Klasse) |
|
(C++20)
|
repräsentiert den letzten
weekday
eines bestimmten
year
und
month
(Klasse) |
|
(C++20)
|
Konventionelle Syntax zur Erstellung von Gregorianischen Kalenderdaten
(Funktion) |
Zeitzone (since C++20)
|
Definiert in Header
<chrono>
|
|
|
Definiert in Namespace
std::chrono
|
|
|
(C++20)
|
beschreibt eine Kopie der
IANA-Zeitzonendatenbank
(Klasse) |
|
(C++20)
|
repräsentiert eine verknüpfte Liste von
tzdb
(Klasse) |
|
greift auf globale Zeitzonendatenbankinformationen zu und steuert diese
(Funktion) |
|
|
(C++20)
|
lokalisiert eine
time_zone
basierend auf ihrem Namen
(Funktion) |
|
(C++20)
|
gibt die aktuelle
time_zone
zurück
(Funktion) |
|
(C++20)
|
repräsentiert eine Zeitzone
(Klasse) |
|
(C++20)
|
repräsentiert Informationen über eine Zeitzone zu einem bestimmten Zeitpunkt
(Klasse) |
|
(C++20)
|
repräsentiert Informationen über eine Konvertierung von lokaler Zeit zu UNIX-Zeit
(Klasse) |
|
(C++20)
|
wählt aus, wie eine mehrdeutige lokale Zeit aufgelöst werden soll
(Enumeration) |
|
(C++20)
|
Traits-Klasse für Zeitzonenzeiger, verwendet von
zoned_time
(Klassentemplate) |
|
(C++20)
|
repräsentiert eine Zeitzone und einen Zeitpunkt
(Klasse) |
|
(C++20)
|
enthält Informationen über eine Schaltsekonde-Einfügung
(Klasse) |
|
(C++20)
|
Schaltsekunden-Einfügungsinformation
(Klasse) |
|
(C++20)
|
erhält Schaltsekunden-Einfügungsinformationen von einem
utc_time
-Objekt
(Funktionstemplate) |
|
(C++20)
|
repräsentiert einen alternativen Namen für eine Zeitzone
(Klasse) |
|
(C++20)
|
Ausnahme, die geworfen wird, um zu melden, dass eine lokale Zeit nicht existiert
(Klasse) |
|
(C++20)
|
Ausnahme, die geworfen wird, um zu melden, dass eine lokale Zeit mehrdeutig ist
(Klasse) |
Literale (seit C++14)
|
Definiert im Header
<chrono>
|
|
|
Definiert im Inline-Namespace
std::literals::chrono_literals
|
|
|
(C++20)
|
Ein
std::chrono::year
Literal, das ein bestimmtes Jahr repräsentiert
(Funktion) |
|
(C++20)
|
Ein
std::chrono::day
Literal, das einen Tag eines Monats repräsentiert
(Funktion) |
|
(C++14)
|
Ein
std::chrono::duration
Literal, das Stunden repräsentiert
(Funktion) |
|
(C++14)
|
Ein
std::chrono::duration
Literal, das Minuten repräsentiert
(Funktion) |
|
(C++14)
|
Ein
std::chrono::duration
Literal, das Sekunden repräsentiert
(Funktion) |
|
(C++14)
|
Ein
std::chrono::duration
Literal, das Millisekunden repräsentiert
(Funktion) |
|
(C++14)
|
Ein
std::chrono::duration
Literal, das Mikrosekunden repräsentiert
(Funktion) |
|
(C++14)
|
Ein
std::chrono::duration
Literal, das Nanosekunden repräsentiert
(Funktion) |
Chrono-I/O (since C++20)
|
Definiert im Header
<chrono>
|
|
|
Definiert im Namespace
std::chrono
|
|
|
(C++20)
|
parst ein
chrono
-Objekt aus einem Stream
(Funktionstemplate) |
Hinweise
| Feature-Test Makro | Wert | Std | Funktion |
|---|---|---|---|
__cpp_lib_chrono
|
201510L
|
(C++17) | Rundungsfunktionen für std::chrono::duration und std::chrono::time_point |
201611L
|
(C++17) | constexpr für alle Memberfunktionen von std::chrono::duration und std::chrono::time_point | |
201907L
|
(C++20) | Kalender und Zeitzonen | |
202306L
|
(C++26) |
Hash
Unterstützung für
std::chrono
Wertklassen
|
C-Stil Datums- und Zeitbibliothek
Ebenso bereitgestellt sind die C-stiligen Datums- und Zeitfunktionen, wie std::time_t , std::difftime , und CLOCKS_PER_SEC .
Beispiel
#include <chrono> #include <iostream> long Fibonacci(unsigned n) { return n < 2 ? n : Fibonacci(n - 1) + Fibonacci(n - 2); } int main() { // Misst und zeigt die Ausführungszeit eines Funktionsaufrufs an. const auto start{std::chrono::steady_clock::now()}; const auto fb{Fibonacci(42)}; const auto finish{std::chrono::steady_clock::now()}; const std::chrono::duration<double> elapsed_seconds{finish - start}; std::cout << "Fibonacci(42): " << fb << "\nElapsed time: "; // std::cout << elapsed_seconds.count() << "s\n"; // Vor C++20 std::cout << elapsed_seconds << '\n'; // C++20's chrono::duration operator<< // Gibt UTC- und Ortszeit aus. const auto tp_utc{std::chrono::system_clock::now()}; std::cout << "Current time 'UTC' is: " << tp_utc << "\n" "Current time 'Local' is: " << std::chrono::current_zone()->to_local(tp_utc) << '\n'; }
Mögliche Ausgabe:
Fibonacci(42): 267914296 Elapsed time: 0.728532s Current time 'UTC' is: 2025-02-10 06:22:39.420666960 Current time 'Local' is: 2025-02-10 09:22:39.420666960