Namespaces
Variants

Date and time library

From cppreference.net

C++ beinhaltet Unterstützung für zwei Arten der Zeitmanipulation:

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
Wanduhrzeit von der systemweiten Echtzeituhr
(Klasse)
monotone Uhr, die nie angepasst wird
(Klasse)
die Uhr mit der kürzesten verfügbaren Taktperiode
(Klasse)
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)
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)
ü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)
repräsentiert den n ten weekday eines Monats
(Klasse)
repräsentiert den letzten weekday eines Monats
(Klasse)
(C++20)
repräsentiert einen bestimmten day eines bestimmten month
(Klasse)
repräsentiert den letzten Tag eines bestimmten month
(Klasse)
repräsentiert den n ten weekday eines bestimmten month
(Klasse)
repräsentiert den letzten weekday eines bestimmten month
(Klasse)
(C++20)
repräsentiert einen bestimmten month eines bestimmten year
(Klasse)
repräsentiert ein bestimmtes year , month und day
(Klasse)
repräsentiert den letzten Tag eines bestimmten year und month
(Klasse)
repräsentiert den n ten weekday eines bestimmten year und month
(Klasse)
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)
lokalisiert eine time_zone basierend auf ihrem Namen
(Funktion)
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)
Traits-Klasse für Zeitzonenzeiger, verwendet von zoned_time
(Klassentemplate)
(C++20)
repräsentiert eine Zeitzone und einen Zeitpunkt
(Klasse)
enthält Informationen über eine Schaltsekonde-Einfügung
(Klasse)
Schaltsekunden-Einfügungsinformation
(Klasse)
erhält Schaltsekunden-Einfügungsinformationen von einem utc_time -Objekt
(Funktionstemplate)
repräsentiert einen alternativen Namen für eine Zeitzone
(Klasse)
Ausnahme, die geworfen wird, um zu melden, dass eine lokale Zeit nicht existiert
(Klasse)
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
Ein std::chrono::year Literal, das ein bestimmtes Jahr repräsentiert
(Funktion)
Ein std::chrono::day Literal, das einen Tag eines Monats repräsentiert
(Funktion)
Ein std::chrono::duration Literal, das Stunden repräsentiert
(Funktion)
Ein std::chrono::duration Literal, das Minuten repräsentiert
(Funktion)
Ein std::chrono::duration Literal, das Sekunden repräsentiert
(Funktion)
Ein std::chrono::duration Literal, das Millisekunden repräsentiert
(Funktion)
Ein std::chrono::duration Literal, das Mikrosekunden repräsentiert
(Funktion)
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