<chrono>
Schließen Sie den Standardheader ein <chrono>
, um Klassen und Funktionen zu definieren, die Zeitdauern und Zeit instants darstellen und bearbeiten.
Ab Visual Studio 2015 wurde 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 eine Typedef fürsteady_clock
die Microsoft C++-Implementierung,steady_clock::time_point
ist jetzt fürtypedef
chrono::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 eine internationale Standardsstelle gibt an, wann neue Schaltsekunden berücksichtigt werden sollen. Eine Datenbank dieser Änderungen wurde Windows 10 hinzugefügt. Speziell:
Funktion | Clientversion | Serverversion |
---|---|---|
Schalte zweite Datenbankaktualisierungen | Windows 10 ab Version 1809 | Windows Server 2019 oder höher |
Unterstützung für Zeitzonen | 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
Calendrical-Typen
Name | Beschreibung |
---|---|
common_type -Struktur |
Beschreibt Spezialisierungen der Klassenvorlage common_type für Instanziationen von duration und time_point . |
day -Klasse |
Ein Tag des Monats. Beispielsweise der 25. Tag des Monats. |
duration -Klasse |
Ein Zeitintervall. |
duration_values -Struktur |
Stellt bestimmte Werte für den duration -Vorlagenparameter Rep bereit. |
hh_mm_ss -Klasse |
Teilt eine duration in Stunden:Minuten:Sekunden auf. |
last_spec |
Wird verwendet, um das letzte Element in einem Monat anzugeben, z. B. den letzten Tag der Woche eines Monats (der letzte Dienstag vom Februar 2020) oder den letzten Tag eines Monats (der letzte Tag von April 2019). |
leap_second -Klasse |
Ein Datum und ein Wert für einen eingefügten Schaltz12. |
leap_second_info -Struktur |
Die von get_leap_second_info zurückgegebenen Daten. |
month -Klasse |
Ein Monat eines Jahres. Beispiel: Juli. |
month_day -Klasse |
Ein bestimmter Tag eines bestimmten Monats. Beispiel: 30. Juli. |
month_day_last -Klasse |
Der letzte Tag eines Monats. |
month_weekday -Klasse |
Der n. Wochentag eines bestimmten Monats. |
month_weekday_last -Klasse |
Der n. Wochentag eines bestimmten Monats. |
time_point -Klasse |
Ein Zeitpunkt. |
weekday -Klasse |
Ein Wochentag. |
weekday_last -Klasse |
Der letzte Wochentag eines Monats. |
weekday_indexed -Klasse |
Kombiniert einen Wochentag mit einem Index, der den Wochentag des Monats darstellt. |
year -Klasse |
Ein Jahr im gregorianischen Kalender. |
year_month -Klasse |
Ein Jahr und Monat. Der Tag ist nicht angegeben. |
year_month_day -Klasse |
Ein Jahr, Monat und Tag. |
year_month_day_last -Klasse |
Der letzte Tag eines bestimmten Monats und Jahres. |
year_month_weekday -Klasse |
Ein bestimmtes Jahr, Monat und n. Wochentag des Monats. |
year_month_weekday_last -Klasse |
Ein bestimmtes Jahr, Monat und letzter Wochentag des Monats. |
Uhren
Name | Beschreibung |
---|---|
file_clock -Klasse |
Ein Alias für die Uhr, für die verwendet std::filesystem::file_time_type wird, um Dateizeitstempel auszudrücken. |
gps_clock -Klasse |
Eine Uhr, die GPS-Zeit hält. Misst die Zeit ab dem ersten Sonntag vom Januar 1980 um 00:00:00 UTC. |
high_resolution_clock -Struktur |
Eine Uhr mit einem Nanosekunden-Teilstrich. |
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 zum Messen von Zeitintervallen bevorzugt. |
system_clock -Struktur |
Eine Uhr, die auf der Echtzeituhr des Systems basiert. |
tai_clock -Klasse |
Measures International Atomic Time (TAI) ab Donnerstag, 1. Januar 1958 um 00:00:00 Uhr. Diese Uhr berücksichtigt keine Schaltsekunden. |
utc_clock -Klasse |
Misst die Zeit seit 00:00:00 UTC am Donnerstag, dem 1. Januar 1970. Diese Uhr macht Schaltsekunden und ist der zeitübliche Standard, 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 Low-Level-Schnittstelle zu Zeitzoneninformationen zum Ergebnis der Konvertierung eines local_time in ein sys_time . |
sys_info |
Stellt eine Low-Level-Schnittstelle zu Zeitzoneninformationen zum Ergebnis der Konvertierung eines sys_time in ein local_time . |
time_zone -Klasse |
Alle Zeitzonenübergänge für einen bestimmten geografischen Bereich. |
time_zone_link -Klasse |
Ein alternativer Name für ein time_zone . |
tzdb -Struktur |
Stellt eine Kopie der Zeitzonendatenbank dar. |
tzdb_list -Klasse |
Eine Singletonliste von Zeitzonendatenbanken. |
zoned_time -Klasse |
Eine Kopplung von 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 |
Der Fehler wird ausgelöst, wenn ein local_time Wert in ein sys_time konvertiert wird und das Ergebnis mehrdeutig ist. |
nonexistent_local_time |
Der Fehler wird ausgelöst, wenn ein local_time Objekt in ein sys_time konvertiert wird und das Ergebnis eine Uhrzeit ist, die nicht vorhanden ist. |
Funktionen
Name | Beschreibung |
---|---|
ceil(duration) |
Gibt das ceil Objekt duration als angegebenen Typ zurück. |
ceil(time_point) |
Gibt das ceil Objekt time_point 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 Objekt duration als angegebenen Typ zurück. |
floor(time_point) |
Gibt das floor Objekt time_point als angegebenen Typ zurück. |
from_stream() |
Analysieren Sie den Eingabedatenstrom mithilfe des angegebenen Formats in einen der std::chrono Zeit- oder Intervalltypen, z day . B. , month , weekday , year usw. |
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 wurde. |
round(time_point) |
Gibt ein time_point Objekt zurück, das als angegebenen Typ gerundet wurde. |
time_point_cast |
Wandelt einen time_point -Objekt in einen angegebenen Typ um. |
Zeitzonenbezogener Bezug
Name | Beschreibung |
---|---|
current_zone |
Ruft die aktuelle Zeitzone ab. |
get_tzdb |
Ruft den ersten Zeitzonendatenbankeintrag ab. |
get_tzdb_list |
Ruft die Liste der Zeitzonendatenbankeinträge ab. |
reload_tzdb |
Ruft einen aktualisierten Zeitzonendatenbankeintrag ab. |
remote_version |
Sucht nach einem aktualisierten Datenbankeintrag für Zeitzonen. |
Operatoren
Name | Beschreibung |
---|---|
operator- |
Subtrahieren oder Negieren 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 eine 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 mit einer Teilstrichperiode von einem Milliardenwert (1/1.000.000.000) einer Sekunde. |
typedef duration<long long, micro> microseconds; |
Synonym für einen duration Typ mit einer Teilstrichperiode von einem Millionstel (1/1.000.000) einer Sekunde. |
typedef duration<long long, milli> milliseconds; |
Synonym für einen duration Typ, der eine Teilstrichperiode von einem Tausendstel (1/1.000) einer Sekunde hat. |
typedef duration<long long> seconds; |
Synonym für einen duration Typ mit einer Teilstrichperiode von 1 Sekunde. |
typedef duration<int, ratio<60>> minutes; |
Synonym für einen duration Typ mit einer Teilstrichperiode von 1 Minute. |
typedef duration<int, ratio<3600>> hours; |
Synonym für einen duration Typ, der eine Teilstrichperiode von 1 Stunde hat. |
Komforttypen time_point
Name | Beschreibung |
---|---|
file_time |
Ein Synonym für time_point<file_clock, Duration> . Stellt ein time_point für ein file_clock . Sie geben z. Bfile_time<seconds> ft; . die Duration . |
gps_seconds |
Ein Synonym für gps_time<seconds>; die Anzahl von Sekunden, dargestellt durch eine, die einem time_point gps_clock zugeordnet ist. |
gps_time |
Ein Synonym für time_point<gps_clock, Duration> . Stellt ein time_point für ein 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 Zeitzone, 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 für eine lokale Zeit dar, die noch keiner Zeitzone zugeordnet ist. Sie geben z. Blocal_time<seconds> lt; . die Duration . A local_time ist eine Ortszeit irgendwo. Es ist nicht die aktuelle Ortszeit der Computeruhr. Nur wenn Sie ein Paar mit einer local_time time_zone erhalten, erhalten Sie einen Punkt, der in UTC-Zeit oder die Uhrzeit in einer bestimmten Zeitzone konvertiert werden kann. |
sys_days |
Ein Synonym für sys_time<days> . Eine Anzahl von Tagen seit der Epoche des system_clock, dargestellt durch eine time_point , die einem system_clock zugeordnet ist. |
sys_seconds |
Ein Synonym für sys_time<seconds> . Anzahl der Nicht-Schalt sekunden seit der Epoche von system_clock (1. Januar 1970 00:00:00:00 UTC), dargestellt durch eine time_point , die einem system_clock zugeordnet 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 die UTC-Zeit genau annähert. |
tai_seconds |
Ein Synonym für tai_time<seconds> . Eine Anzahl von Sekunden, dargestellt durch eine, die einem time_point tai_clock zugeordnet ist. |
tai_time |
Ein Synonym für time_point<tai_clock, Duration> . Sie geben z. Btai_time<seconds> tt; . die Duration . Stellt ein time_point für ein 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 . Stellt ein time_point für ein utc_clock . |
Typeigenschaften
Name | Beschreibung |
---|---|
clock_time_conversion |
Ein Merkmal, das angibt, wie eine Von einer time_point Uhr in eine andere konvertiert werden soll. |
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) Die <chrono>
Kopfzeile definiert die folgenden benutzerdefinierten Literale , die Sie für mehr Benutzerfreundlichkeit, Typsicherheit und Wartung Ihres Codes verwenden können. Diese Literale werden im literals::chrono_literals
Inlinenamespace definiert und befinden sich im Bereich, wenn std::chrono
sich der 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. |
Die folgenden Beispiele zeigen, wie Literale verwendet <chrono>
werden:
constexpr auto day = 24h;
constexpr auto week = 24h* 7;
constexpr auto my_duration_unit = 108ms;