<chrono>
Fügen Sie den Standardheader <chrono>
hinzu, um Klassen und Funktionen zu definieren, die Zeitdauern und Zeitzeiten darstellen und bearbeiten.
Ab Visual Studio 2015 hat sich die Implementierung steady_clock
geändert, um die C++-Standardanforderungen für Beständigkeit und Monotonität zu erfüllen:
steady_clock
basiert jetzt aufQueryPerformanceCounter()
high_resolution_clock
ist jetzt ein Typedef fürsteady_clock
die Microsoft C++-Implementierung,steady_clock::time_point
ist jetzttypedef
ein Fürchrono::time_point<steady_clock>
. Dies ist jedoch nicht unbedingt der Fall für andere Implementierungen.
Anforderungen
Header:<chrono>
Regionale Gesetzgeber nehmen gelegentlich Änderungen an Zeitzonen vor, und ein internationaler Standards body gibt an, wann neue Sprung sekunden berücksichtigt werden sollen. Eine Datenbank dieser Änderungen wurde zu Windows 10 hinzugefügt. Dies gilt insbesondere in folgenden Fällen:
Funktion | Clientversion | Serverversion |
---|---|---|
Zweite Datenbankupdates springen | Windows 10 Version 1809 oder höher | Windows Server 2019 oder höher |
Unterstützung der Zeitzone | Windows 10 Version 1903/19H1 oder höher | Windows Server 2022 oder höher |
Die Verwendung der Zeitzoneneinrichtungen in älteren Versionen von Windows führt zu einem Laufzeitfehler.
Namespace:std
Calendrische Typen
Name | BESCHREIBUNG |
---|---|
common_type -Struktur |
Beschreibt Spezialisierungen der Klassenvorlage common_type für Instanziationen von duration und time_point . |
-Klasse | Ein Tag des Monats. Beispiel: der 25. Tag des Monats. |
-Klasse | Zeitintervall. |
duration_values -Struktur |
Stellt bestimmte Werte für den duration -Vorlagenparameter Rep bereit. |
-Klasse | Teilt eine duration in Stunden:Minuten:Sekunden auf. |
last_spec |
Wird verwendet, um das letzte Element in einem Monat wie den letzten Tag der Woche eines Monats (den letzten Dienstag vom Februar 2020) oder den letzten Tag eines Monats (den letzten Tag vom April 2019) anzugeben. |
-Klasse | Ein Datum und ein Wert für einen eingefügten Sprung sekunde. |
leap_second_info -Struktur |
Die von get_leap_second_info zurückgegebenen Daten. |
-Klasse | Ein Monat eines Jahres. Beispielsweise Juli. |
-Klasse | Ein bestimmter Tag eines bestimmten Monats. Beispiel: 30. Juli. |
-Klasse | Der letzte Tag eines Monats. |
-Klasse | Der n. Wochentag eines bestimmten Monats. |
-Klasse | Der n. Wochentag eines bestimmten Monats. |
-Klasse | Ein Zeitpunkt. |
-Klasse | Ein Tag der Woche. |
-Klasse | Der letzte Wochentag eines Monats. |
-Klasse | Kombiniert einen Wochentag mit einem Index, der den Wochentag des Monats darstellt. |
-Klasse | Ein Jahr im gregorianischen Kalender. |
-Klasse | Ein Jahr und Monat. Der Tag wird nicht angegeben. |
-Klasse | Ein Jahr, Monat und Tag. |
-Klasse | Der letzte Tag eines bestimmten Monats und Jahres. |
-Klasse | Ein bestimmtes Jahr, Monat und n. Wochentag des Monats. |
-Klasse | Ein bestimmtes Jahr, Monat und letzter Wochentag des Monats. |
Uhren
Name | BESCHREIBUNG |
---|---|
-Klasse | Ein Alias für die Für die Uhr verwendete Uhr, die zum Ausdrücken von Zeitstempeln der Datei verwendet std::filesystem::file_time_type wird. |
-Klasse | Eine Uhr, die GPS-Zeit behält. Misst die Zeit ab dem ersten Sonntag vom 1. Januar 1980 um 00:00:00 UTC. |
high_resolution_clock -Struktur |
Eine Uhr mit einem Nanosekunden-Tick-Zeitraum. |
local_t -Struktur |
Eine Pseudouhr, die als Argument für die time_point Vorlage verwendet wird, um anzugeben, dass die time_point lokale Uhrzeit darstellt. |
steady_clock -Struktur |
Eine steady Uhr. Diese Uhr wird für die Messung von Zeitintervallen bevorzugt. |
system_clock -Struktur |
Eine Uhr basierend auf der Echtzeituhr des Systems. |
-Klasse | Misst internationale Atomzeit (TAI) ab Donnerstag, 1. Januar 1958 um 00:00:00 Uhr. Diese Uhr wird nicht für Sprung sekunden berücksichtigt. |
-Klasse | Misst die Zeit seit 00:00:00 UTC am Donnerstag, 1. Januar 1970. Diese Uhr führt zu Sprung sekunden und ist der Zeitstandard, der auf der ganzen Welt verwendet wird. |
Zeitzonen
Name | BESCHREIBUNG |
---|---|
choose |
Eine Enumeration, die angibt, wie die mehrdeutige Konvertierung einer in ein local_time .sys_time |
local_info |
Stellt eine Schnittstelle mit niedriger Ebene zur Zeitzone bereit, um Informationen zum Ergebnis der Konvertierung einer local_time Datei in ein .sys_time |
sys_info |
Stellt eine Schnittstelle mit niedriger Ebene zur Zeitzone bereit, um Informationen zum Ergebnis der Konvertierung einer sys_time Datei in ein .local_time |
-Klasse | Alle Zeitzonenübergänge für ein bestimmtes geografisches Gebiet. |
-Klasse | Ein alternativer Name für einen time_zone . |
tzdb -Struktur |
Stellt eine Kopie der Zeitzonendatenbank dar. |
-Klasse | Eine Singleton-Liste der Zeitzonendatenbanken. |
-Klasse | Eine Kopplung einer time_zone und einer time_point mit einer angegebenen Genauigkeit. |
zoned_traits -Struktur |
Wird verwendet, um einer anderen Standardzeitzone eine zoned_time andere Standardzeitzone zuzuordnen und optional einen benutzerdefinierten Namen dieser Standardzeitzone zuzuordnen. |
Ausnahmen
Name | BESCHREIBUNG |
---|---|
ambiguous_local_time |
Fehler, der ausgelöst wird, wenn eine local_time in ein sys_time und das Ergebnis mehrdeutig ist. |
nonexistent_local_time |
Fehler, der ausgelöst wird, wenn ein local_time Objekt in ein sys_time konvertiert wird und das Ergebnis eine Zeit ist, die nicht vorhanden ist. |
Functions
Name | BESCHREIBUNG |
---|---|
ceil(duration) |
Gibt das ceil duration Objekt als angegebenen Typ zurück. |
ceil(time_point) |
Gibt das ceil time_point Objekt als angegebenen Typ zurück. |
clock_cast |
Wandelt eine Von einer time_point Uhr in eine Entsprechung time_point für eine andere Uhr um. |
duration_cast |
Wandelt einen duration -Objekt in einen angegebenen Typ um. |
floor(duration) |
Gibt das floor duration Objekt als angegebenen Typ zurück. |
floor(time_point) |
Gibt das floor time_point Objekt als angegebenen Typ zurück. |
from_stream() |
Analysieren Sie den Eingabedatenstrom in einen der std::chrono Zeit- oder Intervalltypen, zday . B. , month weekday , year , usw. mithilfe des angegebenen Formats. |
get_leap_second_info |
Ruft eine leap_second_info Struktur ab. |
is_am |
Gibt an, ob ein hours Objekt AM ist. |
is_pm |
Gibt an, ob ein hours Objekt PM ist. |
locate_zone |
Ruft eine angegebene Zeitzone ab. |
make12 |
Gibt ein hours 12-Stunden-Formular zurück. |
make24 |
Gibt ein hours 24-Stunden-Formular zurück. |
round(duration) |
Gibt ein duration Objekt zurück, das als angegebenen Typ gerundet ist. |
round(time_point) |
Gibt ein time_point Objekt zurück, das als angegebenen Typ gerundet ist. |
time_point_cast |
Wandelt einen time_point -Objekt in einen angegebenen Typ um. |
Zeitzone im Zusammenhang
Name | BESCHREIBUNG |
---|---|
current_zone |
Ruft die aktuelle Zeitzone ab. |
get_tzdb |
Ruft den ersten Datenbankeintrag der Zeitzone ab. |
get_tzdb_list |
Ruft die Liste der Datenbankeinträge der Zeitzone ab. |
reload_tzdb |
Ruft einen aktualisierten Datenbankeintrag für Zeitzonen ab. |
remote_version |
Sucht nach einem aktualisierten Datenbankeintrag für Zeitzonen. |
Operatoren
Name | BESCHREIBUNG |
---|---|
operator- |
Subtrahieren oder Verwerfen verschiedener <chrono> Objekte. |
operator!= |
Ungleichheitsoperator, der mit verschiedenen <chrono> Objekten verwendet wird. |
operator modulo |
Operator für Modulo-Vorgänge für duration -Objekte. |
operator* |
Multiplikationsoperator für duration -Objekte. |
operator/ |
Divisionsoperator für duration -Objekte. |
operator/ |
Stellt Syntax zum Erstellen von Kalenderdaten bereit. |
operator+ |
Zu verschiedenen <chrono> Objekten hinzufügen. |
operator< |
Bestimmt, ob verschiedene <chrono> Objekte kleiner als eine andere sind. |
operator<= |
Bestimmt, ob verschiedene <chrono> Objekte kleiner oder gleich einem anderen sind. |
operator== |
Bestimmt, ob verschiedene <chrono> Objekte gleicheinander sind. |
operator> |
Bestimmt, ob verschiedene <chrono> Objekte größer als eine andere sind. |
operator>= |
Bestimmt, ob verschiedene <chrono> Objekte größer oder gleich einem anderen sind. |
TypeDefs
Weitere Informationen zu Verhältnistypen, die in den folgenden Typedefs verwendet werden, finden Sie unter <ratio>
.
Komforttypen duration
Name | BESCHREIBUNG |
---|---|
typedef duration<long long, nano> nanoseconds; |
Synonym für einen duration Typ, der einen Teilstrichzeitraum von einem Milliardenwert (1/1.000.000.000) einer Sekunde hat. |
typedef duration<long long, micro> microseconds; |
Synonym für einen duration Typ, der einen Teilstrichzeitraum (1/1.000.000) einer Sekunde hat. |
typedef duration<long long, milli> milliseconds; |
Synonym für einen duration Typ, der einen Tickzeitraum von eintausend (1/1.000) einer Sekunde hat. |
typedef duration<long long> seconds; |
Synonym für einen duration Typ, der einen Teilstrichzeitraum von 1 Sekunde aufweist. |
typedef duration<int, ratio<60>> minutes; |
Synonym für einen duration Typ, der einen Teilstrichzeitraum von 1 Minute aufweist. |
typedef duration<int, ratio<3600>> hours; |
Synonym für einen duration Typ, der einen Teilstrichzeitraum von 1 Stunde hat. |
Komforttypen time_point
Name | BESCHREIBUNG |
---|---|
file_time |
Ein Synonym für time_point<file_clock, Duration> . Represents a for a time_point file_clock . Sie geben z. Bfile_time<seconds> ft; . die Duration . |
gps_seconds |
Ein Synonym für gps_time<seconds>; eine Anzahl von Sekunden, dargestellt durch eine, die einem time_point zugeordnet gps_clock ist. |
gps_time |
Ein Synonym für time_point<gps_clock, Duration> . Represents a for a time_point gps_clock . Sie geben z. Bgps_time<milliseconds> gps; . die Duration . |
local_days |
Ein Synonym für local_time<days> . Eine Anzahl von Tagen, dargestellt durch eine time_point , die keiner Zeitzone zugeordnet ist. |
local_seconds |
Ein Synonym für local_time<seconds> . |
local_time |
Ein Synonym für time_point<local_t, Duration> . Stellt eine time_point lokale Uhrzeit dar, die noch nicht einer Zeitzone zugeordnet ist. Sie geben z. Blocal_time<seconds> lt; . die Duration . A local_time ist eine ortsnahe Zeit. Es ist nicht die aktuelle lokale Uhrzeit der Computeruhr. Nur wenn Sie ein Paar mit einer local_time time_zone erhalten, erhalten Sie einen Zeitpunkt, der in UTC-Zeit konvertiert werden kann, oder die Uhrzeit in einer bestimmten Zeitzone. |
sys_days |
Ein Synonym für sys_time<days> . Eine Anzahl von Tagen seit der Epoche der system_clock, dargestellt durch eine, die einem time_point zugeordnet system_clock ist. |
sys_seconds |
Ein Synonym für sys_time<seconds> . Eine Anzahl von Nicht-Schalt sekunden seit der Epoche von system_clock (1. Januar 1970 00:00:00 UTC), dargestellt durch eine time_point , die einem zugeordnet system_clock ist. |
sys_time |
Ein Synonym für time_point<system_clock, Duration> . Sie geben z. Bsys_time<seconds> st; . die Duration . Stellt einen time_point zurückgegebenen Wert dar system_clock::now() . Es stellt Unix-Zeit dar, die genau der UTC-Zeit entspricht. |
tai_seconds |
Ein Synonym für tai_time<seconds> . Eine Anzahl von Sekunden, dargestellt durch eine, die einem time_point zugeordnet tai_clock ist. |
tai_time |
Ein Synonym für time_point<tai_clock, Duration> . Sie geben z. Btai_time<seconds> tt; . die Duration . Represents a for a time_point tai_clock . |
utc_seconds |
Ein Synonym für utc_time<seconds>; |
utc_time |
Ein Synonym für time_point<utc_clock, Duration> . Sie geben z. Butc_time<seconds> ut; . die Duration . Represents a for a time_point utc_clock . |
Typeigenschaften
Name | BESCHREIBUNG |
---|---|
clock_time_conversion |
Ein Merkmal, das angibt, wie eine Uhr von einer time_point Uhr in eine andere konvertiert wird. |
is_clock | Überprüfen Sie, ob ein Typ eine Uhr ist. |
treat_as_floating_point | Überprüfen Sie, ob ein duration Teilstrich in einen anderen duration konvertiert werden kann, der einen anderen Teilstrich hat. |
Literale
(C++11) Der <chrono>
Header definiert die folgenden benutzerdefinierten Literale , die Sie für mehr Komfort, Typsicherheit und Wartungsfreundlichkeit Ihres Codes verwenden können. Diese Literale werden im literals::chrono_literals
Inlinenamespace definiert und befinden sich im Bereich, wenn std::chrono
er sich im Bereich befindet.
Deklaration | BESCHREIBUNG |
---|---|
hours operator "" h(unsigned long long Val) |
Gibt die Stunden als Integralwert an. |
duration<double, ratio<3600>> operator "" h(long double Val) |
Gibt die Stunden als Gleitkommawert an. |
minutes (operator "" min)(unsigned long long Val) |
Gibt die Minuten als Integralwert an. |
duration<double, ratio<60>> (operator "" min)( long double Val) |
Gibt die Minuten als Gleitkommawert an. |
seconds operator "" s(unsigned long long Val) |
Gibt die Minuten als Integralwert an. |
duration<double> operator "" s(long double Val) |
Gibt die Sekunden als Gleitkommawert an. |
milliseconds operator "" ms(unsigned long long Val) |
Gibt die Millisekunden als Integralwert an. |
duration<double, milli> operator "" ms(long double Val) |
Gibt die Millisekunden als Gleitkommawert an. |
microseconds operator "" us(unsigned long long Val) |
Gibt die Mikrosekunden als Integralwert an. |
duration<double, micro> operator "" us(long double Val) |
Gibt die Mikrosekunden als Gleitkommawert an. |
nanoseconds operator "" ns(unsigned long long Val) |
Gibt die Nanosekunden als Integralwert an. |
duration<double, nano> operator "" ns(long double Val) |
Gibt die Nanosekunden als Gleitkommawert an. |
In den folgenden Beispielen wird gezeigt, wie Literale verwendet <chrono>
werden:
constexpr auto day = 24h;
constexpr auto week = 24h* 7;
constexpr auto my_duration_unit = 108ms;