<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 auf QueryPerformanceCounter()
  • high_resolution_clock ist jetzt eine Typedef für steady_clock die Microsoft C++-Implementierung, steady_clock::time_point ist jetzt für typedefchrono::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:

Feature Clientversion Serverversion
Schalte zweite Datenbankaktualisierungen Windows 10, Version 1809 oder höher 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_typewird, 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_timeandere 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, yearusw.
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_pointgps_clockzugeordnet 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_timetime_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_clockzugeordnet 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_clockzugeordnet 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_pointtai_clockzugeordnet 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_pointfü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 Komfort, Typsicherheit und Standard nachhaltigen Code 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;

Siehe auch

Headerdateienreferenz