<chrono>
Zahrňte standardní hlavičku <chrono>
pro definování tříd a funkcí, které představují a manipulují s časovými dobami trvání a časovými okamžiky.
Počínaje sadou Visual Studio 2015 se implementace steady_clock
změnila tak, aby splňovala standardní požadavky jazyka C++pro stálost a monotonicity:
steady_clock
je nyní založena naQueryPerformanceCounter()
high_resolution_clock
je nyní typedef prosteady_clock
v implementaci Microsoft C++,steady_clock::time_point
je nyní protypedef
chrono::time_point<steady_clock>
. To ale nemusí nutně být případ jiných implementací.
Požadavky
Záhlaví: <chrono>
Regionální zákonodárci občas mění časová pásma a mezinárodní orgán norem určuje, kdy se mají počítat nové přestupné sekundy. Do Windows 10 byla přidána databáze těchto změn. Konkrétně:
Funkce | Verze klienta | Verze serveru |
---|---|---|
Přestupné aktualizace druhé databáze | Windows 10 verze 1809 nebo novější | Windows Server 2019 nebo novější |
Podpora časových pásem | Windows 10 verze 1903/19H1 nebo novější | Windows Server 2022 nebo novější |
Při použití zařízení s časovým pásmem ve starších verzích Windows dojde k chybě za běhu.
Obor názvů: std
Kalendrické typy
Název | Popis |
---|---|
common_type Struct |
Popisuje specializace šablony common_type třídy pro vytváření instancí duration a time_point . |
Třída day |
Den v měsíci. Například 25. den v měsíci. |
Třída duration |
Časový interval. |
duration_values Struct |
Poskytuje konkrétní hodnoty pro duration parametr Rep šablony . |
Třída hh_mm_ss |
Rozdělí duration hodiny:minuty:sekundy. |
last_spec |
Slouží k označení poslední položky v měsíci, například poslední den v týdnu v měsíci (poslední úterý v únoru 2020) nebo poslední den v měsíci (poslední den v dubnu 2019). |
Třída leap_second |
Datum a hodnota vložené přestupné sekundy. |
leap_second_info Struct |
Data vrácená .get_leap_second_info |
Třída month |
Měsíc v roce. Například červenec. |
Třída month_day |
Konkrétní den konkrétního měsíce. Například 30. července. |
Třída month_day_last |
Poslední den v měsíci. |
Třída month_weekday |
Nth weekday of a specific month. |
Třída month_weekday_last |
Nth weekday of a specific month. |
Třída time_point |
Bod v čase. |
Třída weekday |
Den v týdnu. |
Třída weekday_last |
Poslední den v týdnu měsíce. |
Třída weekday_indexed |
Kombinuje den v týdnu s indexem, který představuje den v týdnu v měsíci. |
Třída year |
Rok v gregoriánském kalendáři. |
Třída year_month |
Rok a měsíc. Den není zadaný. |
Třída year_month_day |
Rok, měsíc a den. |
Třída year_month_day_last |
Poslední den konkrétního měsíce a roku. |
Třída year_month_weekday |
Konkrétní rok, měsíc a nth weekday v měsíci. |
Třída year_month_weekday_last |
Konkrétní rok, měsíc a poslední den v týdnu v měsíci. |
Hodiny
Název | Popis |
---|---|
Třída file_clock |
Alias pro hodiny používané pro std::filesystem::file_time_type , který se používá k vyjádření časových razítek souboru. |
Třída gps_clock |
Hodiny, které udržují GPS čas. Měří čas od první neděle 1980 v 00:00:00 UTC. |
high_resolution_clock Struct |
Hodiny s nanosekundovým intervalem. |
local_t Struct |
Pseudo-hodiny používané jako argument time_point šablony označující, že time_point představuje místní čas. |
steady_clock Struct |
Hodiny steady . Tyto hodiny jsou upřednostňované pro měření časových intervalů. |
system_clock Struct |
Hodiny založené na hodinách systému v reálném čase. |
Třída tai_clock |
Měří mezinárodní atomický čas (TAI) od čtvrtek 1. ledna 1958 v 00:00:00. Tyto hodiny nezohlácuje přestupné sekundy. |
Třída utc_clock |
Měří čas od 00:00:00 UTC ve čtvrtek, 1. ledna 1970. Tyto hodiny představují přestupné sekundy a je standardní čas používaný po celém světě. |
Časová pásma
Název | Popis |
---|---|
choose |
Výčet, který určuje, jak vyřešit nejednoznačný převod na local_time .sys_time |
local_info |
Poskytuje rozhraní nízké úrovně informace o výsledku převodu local_time na sys_time . |
sys_info |
Poskytuje rozhraní nízké úrovně informace o výsledku převodu sys_time na local_time . |
Třída time_zone |
Všechny přechody časových pásem pro konkrétní geografickou oblast. |
Třída time_zone_link |
Alternativní název pro .time_zone |
tzdb Struct |
Představuje kopii databáze časového pásma. |
Třída tzdb_list |
Jednoúčelový seznam databází časových pásem |
Třída zoned_time |
Párování a time_zone s time_point zadanou přesností. |
zoned_traits Struct |
Používá se k přidružení jiného výchozího časového pásma k sadě zoned_time a volitelně namapování vlastního názvu na toto výchozí časové pásmo. |
Výjimky
Název | Popis |
---|---|
ambiguous_local_time |
Chyba vyvolaná při převodu local_time na a sys_time výsledek je nejednoznačný. |
nonexistent_local_time |
Chyba vyvolaná při převodu local_time na a sys_time výsledek je čas, který neexistuje. |
Funkce
Název | Popis |
---|---|
ceil(duration) |
ceil Vrátí objekt duration jako zadaný typ. |
ceil(time_point) |
ceil Vrátí objekt time_point jako zadaný typ. |
clock_cast |
time_point Převede jedno hodiny na ekvivalent time_point pro jiné hodiny. |
duration_cast |
Přetypuje duration objekt na zadaný typ. |
floor(duration) |
floor Vrátí objekt duration jako zadaný typ. |
floor(time_point) |
floor Vrátí objekt time_point jako zadaný typ. |
from_stream() |
Parsujte vstupní datový proud do jednoho z typů časových std::chrono nebo intervalů, například day , month , year weekday a tak dále, pomocí zadaného formátu. |
get_leap_second_info |
leap_second_info Získá strukturu. |
is_am |
Určuje, hours zda je objekt AM. |
is_pm |
Určuje, hours zda je objekt PM. |
locate_zone |
Získá zadané časové pásmo. |
make12 |
Vrátí 12hodinový hours tvar. |
make24 |
Vrátí 24hodinový hours tvar. |
round(duration) |
duration Vrátí objekt zaokrouhlený jako zadaný typ. |
round(time_point) |
time_point Vrátí objekt zaokrouhlený jako zadaný typ. |
time_point_cast |
Přetypuje time_point objekt na zadaný typ. |
Související s časovým pásmem
Název | Popis |
---|---|
current_zone |
Získá aktuální časové pásmo. |
get_tzdb |
Získá první položku databáze časového pásma. |
get_tzdb_list |
Získá seznam položek databáze časových pásem. |
reload_tzdb |
Získá aktualizovanou položku databáze časového pásma. |
remote_version |
Kontroluje aktualizovanou položku databáze časového pásma. |
Operátory
Název | Popis |
---|---|
operator- |
Odečítá nebo neguje různé <chrono> objekty. |
operator!= |
Operátor nerovnosti, který se používá s různými <chrono> objekty. |
operator modulo |
Operátor pro operace modulo s duration objekty. |
operator* |
Operátor násobení pro duration objekty |
operator/ |
Operátor dělení pro duration objekty |
operator/ |
Poskytuje syntaxi pro vytváření kalendářních dat. |
operator+ |
Přidejte do různých <chrono> objektů. |
operator< |
Určuje, zda jsou různé <chrono> objekty menší než jiné. |
operator<= |
Určuje, zda jsou různé <chrono> objekty menší nebo rovny jiné. |
operator== |
Určuje, zda se různé <chrono> objekty vzájemně rovnají. |
operator> |
Určuje, zda jsou různé <chrono> objekty větší než jiné. |
operator>= |
Určuje, zda jsou různé <chrono> objekty větší nebo rovny jiné. |
Typedefs
Další informace o typech poměrů, které se používají v následujících typechdefs, naleznete v tématu <ratio>
.
Typy pohodlí duration
Název | Popis |
---|---|
typedef duration<long long, nano> nanoseconds; |
Synonymum pro duration typ, který má období odškrtávku jedné miliardy (1/1 000 000 000) sekundy. |
typedef duration<long long, micro> microseconds; |
Synonymum pro duration typ, který má období odškrtávku jednoho milionu (1/1 000 000) sekundy. |
typedef duration<long long, milli> milliseconds; |
Synonymum pro duration typ, který má období odškrtávku 1/1 000 sekundy. |
typedef duration<long long> seconds; |
Synonymum pro duration typ, který má interval 1 sekundy. |
typedef duration<int, ratio<60>> minutes; |
Synonymum pro duration typ, který má období zaškrtnutí 1 minuty. |
typedef duration<int, ratio<3600>> hours; |
Synonymum duration pro typ, který má období zaškrtnutí 1 hodiny. |
Typy pohodlí time_point
Název | Popis |
---|---|
file_time |
Synonymum pro time_point<file_clock, Duration> . Představuje pro time_point objekt file_clock . Zadáte Duration například file_time<seconds> ft; . |
gps_seconds |
Synonymum pro gps_time<seconds>; počet sekund reprezentovaný time_point symbolem , který je přidružen k gps_clock . |
gps_time |
Synonymum pro time_point<gps_clock, Duration> . Představuje pro time_point objekt gps_clock . Zadáte Duration například gps_time<milliseconds> gps; . |
local_days |
Synonymum pro local_time<days> . Počet dní reprezentovaný žádným časovým pásmem time_point , který není přidružený k žádnému časovému pásmu. |
local_seconds |
Synonymum pro local_time<seconds> . |
local_time |
Synonymum pro time_point<local_t, Duration> . time_point Představuje místní čas, který ještě není přidružený k časovému pásmu. Zadáte Duration například local_time<seconds> lt; . A local_time je někde místní čas. Nejedná se o aktuální místní čas hodin počítače. Pouze když párujete s local_time časem time_zone , získáte bod v čase, který lze převést na čas UTC nebo čas v určitém časovém pásmu. |
sys_days |
Synonymum pro sys_time<days> . Počet dnů od epochy system_clock, reprezentovaný time_point hodnotou, která je přidružena k system_clock . |
sys_seconds |
Synonymum pro sys_time<seconds> . Počet neskočitých sekund od epochy system_clock (1. ledna 1970 00:00:00 UTC), reprezentované time_point tímto .system_clock |
sys_time |
Synonymum pro time_point<system_clock, Duration> . Zadáte Duration například sys_time<seconds> st; . Představuje vrácený time_point z system_clock::now() . Představuje unixový čas, který blíže přibližuje čas UTC. |
tai_seconds |
Synonymum pro tai_time<seconds> . Počet sekund reprezentovaný time_point hodnotou, která je přidružena k .tai_clock |
tai_time |
Synonymum pro time_point<tai_clock, Duration> . Duration Zadáte například tai_time<seconds> tt; . Představuje pro time_point objekt tai_clock . |
utc_seconds |
Synonymum pro utc_time<seconds>; |
utc_time |
Synonymum pro time_point<utc_clock, Duration> . Duration Zadáte například utc_time<seconds> ut; . Představuje pro time_point objekt utc_clock . |
Vlastnosti typu
Název | Popis |
---|---|
clock_time_conversion |
Vlastnost, která určuje, jak převést z jedné hodiny na jinou time_point . |
is_clock | Zkontrolujte, jestli je typ hodin. |
treat_as_floating_point | Zkontrolujte, jestli duration se dá převést na jinou duration , která má jiné období zaškrtnutí. |
Literály
(C++11) Hlavička <chrono>
definuje následující uživatelsky definované literály , které můžete použít pro větší pohodlí, bezpečnost typů a udržovatelnost kódu. Tyto literály jsou definovány v vloženého literals::chrono_literals
oboru názvů a jsou v oboru, pokud std::chrono
je v oboru.
Deklarace | Popis |
---|---|
hours operator "" h(unsigned long long Val) |
Určuje hodiny jako celočíselnou hodnotu. |
duration<double, ratio<3600>> operator "" h(long double Val) |
Určuje hodiny jako hodnotu s plovoucí desetinou čárkou. |
minutes (operator "" min)(unsigned long long Val) |
Určuje minuty jako celočíselnou hodnotu. |
duration<double, ratio<60>> (operator "" min)( long double Val) |
Určuje minuty jako hodnota s plovoucí desetinou čárkou. |
seconds operator "" s(unsigned long long Val) |
Určuje minuty jako celočíselnou hodnotu. |
duration<double> operator "" s(long double Val) |
Určuje sekundy jako hodnotu s plovoucí desetinou čárkou. |
milliseconds operator "" ms(unsigned long long Val) |
Určuje milisekundy jako celočíselnou hodnotu. |
duration<double, milli> operator "" ms(long double Val) |
Určuje milisekundy jako hodnotu s plovoucí desetinnou čárkou. |
microseconds operator "" us(unsigned long long Val) |
Určuje mikrosekundy jako celočíselnou hodnotu. |
duration<double, micro> operator "" us(long double Val) |
Určuje mikrosekundy jako hodnotu s plovoucí desetinnou čárkou. |
nanoseconds operator "" ns(unsigned long long Val) |
Určuje nanosekundy jako celočíselnou hodnotu. |
duration<double, nano> operator "" ns(long double Val) |
Určuje nanosekundy jako hodnotu s plovoucí desetinnou čárkou. |
Následující příklady ukazují, jak používat <chrono>
literály:
constexpr auto day = 24h;
constexpr auto week = 24h* 7;
constexpr auto my_duration_unit = 108ms;