<chrono>
Includere l'intestazione <chrono>
standard per definire classi e funzioni che rappresentano e modificano la durata e gli istantanei temporali.
A partire da Visual Studio 2015, l'implementazione di steady_clock
è cambiata per soddisfare i requisiti standard C++ per la costante e la monotonicità:
steady_clock
è ora basato suQueryPerformanceCounter()
high_resolution_clock
è ora un typedef persteady_clock
Nell'implementazionesteady_clock::time_point
di Microsoft C++ è ora untypedef
perchrono::time_point<steady_clock>
. Tuttavia, questo non è necessariamente il caso per altre implementazioni.
Requisiti
Intestazione: <chrono>
I legislatori regionali apportano occasionalmente modifiche ai fusi orari e un organismo internazionale degli standard specifica quando devono essere considerati nuovi secondi bisestile. Un database di queste modifiche è stato aggiunto a Windows 10. In particolare:
Funzionalità | Versione client | Versione del server |
---|---|---|
Aggiornamenti del secondo database leap | Windows 10 versione 1809 o successive | Windows Server 2019 o versione successiva |
Supporto del fuso orario | Windows 10 versione 1903/19H1 o successiva | Windows Server 2022 o versioni successive |
L'uso delle funzionalità del fuso orario nelle versioni precedenti di Windows genera un errore di runtime.
Spazio dei nomi: std
Tipi calendrical
Nome | Descrizione |
---|---|
common_type Struct |
Vengono descritte le specializzazioni del modello common_type di classe per le istanze di duration e time_point . |
Classe day |
Un giorno del mese. Ad esempio, il 25° giorno del mese. |
Classe duration |
Intervallo di tempo. |
duration_values Struct |
Fornisce valori specifici per il parametro di modello duration Rep . |
Classe hh_mm_ss |
Suddivide un oggetto duration in ore:minuti:secondi. |
last_spec |
Utilizzato per indicare l'ultimo elemento in un mese, ad esempio l'ultimo giorno della settimana di un mese (l'ultimo martedì del febbraio 2020) o l'ultimo giorno di un mese (ultimo giorno di aprile 2019). |
Classe leap_second |
Una data e un valore per un secondo bisestile inserito. |
leap_second_info Struct |
Dati restituiti da get_leap_second_info . |
Classe month |
Un mese di un anno. Ad esempio, luglio. |
Classe month_day |
Giorno specifico di un mese specifico. Ad esempio, il 30 luglio. |
Classe month_day_last |
Ultimo giorno di un mese. |
Classe month_weekday |
N° giorno feriale di un mese specifico. |
Classe month_weekday_last |
N° giorno feriale di un mese specifico. |
Classe time_point |
Un punto nel tempo. |
Classe weekday |
Un giorno della settimana. |
Classe weekday_last |
Ultimo giorno feriale di un mese. |
Classe weekday_indexed |
Combina un giorno della settimana con un indice che rappresenta il giorno feriale del mese. |
Classe year |
Un anno nel calendario gregoriano. |
Classe year_month |
Un anno e un mese. Il giorno non è specificato. |
Classe year_month_day |
Un anno, un mese e un giorno. |
Classe year_month_day_last |
Ultimo giorno di un mese e un anno specifici. |
Classe year_month_weekday |
Anno specifico, mese e n giorno feriale del mese. |
Classe year_month_weekday_last |
Anno, mese e ultimo giorno feriale del mese specifico. |
Orologi
Nome | Descrizione |
---|---|
Classe file_clock |
Alias per l'orologio usato per std::filesystem::file_time_type , che viene usato per esprimere i timestamp dei file. |
Classe gps_clock |
Un orologio che mantiene l'ora GPS. Misura l'ora a partire dalla prima domenica del 1980 alle 00:00:00 UTC. |
high_resolution_clock Struct |
Orologio con un punto di graduazione nanosecondo. |
local_t Struct |
Pseudo clock utilizzato come argomento per il time_point modello per indicare che rappresenta l'ora time_point locale. |
steady_clock Struct |
Un steady orologio. Questo orologio è preferibile per misurare gli intervalli di tempo. |
system_clock Struct |
Orologio basato sull'orologio in tempo reale del sistema. |
Classe tai_clock |
Misura l'ora atomica internazionale (TAI) a partire dal giovedì 1 gennaio 1958 alle 00:00:00. Questo orologio non tiene conto dei secondi intercalari. |
Classe utc_clock |
Misura l'ora dalle 00:00:00 UTC di giovedì 1 gennaio 1970. Questo orologio rappresenta i secondi intercalari ed è lo standard dell'ora usato in tutto il mondo. |
Fusi orari
Nome | Descrizione |
---|---|
choose |
Enumerazione che specifica come risolvere la conversione ambigua di un local_time oggetto in un oggetto sys_time . |
local_info |
Fornisce un'interfaccia di basso livello alle informazioni sul fuso orario sul risultato della conversione di un local_time oggetto in un oggetto sys_time . |
sys_info |
Fornisce un'interfaccia di basso livello alle informazioni sul fuso orario sul risultato della conversione di un sys_time oggetto in un oggetto local_time . |
Classe time_zone |
Tutte le transizioni di fuso orario per un'area geografica specifica. |
Classe time_zone_link |
Nome alternativo per un oggetto time_zone . |
tzdb Struct |
Rappresenta una copia del database del fuso orario. |
Classe tzdb_list |
Elenco singleton dei database del fuso orario. |
Classe zoned_time |
Associazione di un oggetto time_zone e un oggetto time_point con una precisione specificata. |
zoned_traits Struct |
Usato per associare un fuso orario predefinito diverso a un zoned_time oggetto e, facoltativamente, eseguire il mapping di un nome personalizzato a tale fuso orario predefinito. |
Eccezioni
Nome | Descrizione |
---|---|
ambiguous_local_time |
Errore generato quando un local_time oggetto viene convertito in e sys_time il risultato è ambiguo. |
nonexistent_local_time |
Errore generato quando un local_time oggetto viene convertito in e sys_time il risultato è un'ora che non esiste. |
Funzioni
Nome | Descrizione |
---|---|
ceil(duration) |
Restituisce l'oggetto ceil di un duration oggetto come tipo specificato. |
ceil(time_point) |
Restituisce l'oggetto ceil di un time_point oggetto come tipo specificato. |
clock_cast |
Converte un oggetto time_point da un orologio a un equivalente time_point per un altro orologio. |
duration_cast |
Esegue il cast di un oggetto duration in un tipo specificato. |
floor(duration) |
Restituisce l'oggetto floor di un duration oggetto come tipo specificato. |
floor(time_point) |
Restituisce l'oggetto floor di un time_point oggetto come tipo specificato. |
from_stream() |
Analizzare il flusso di input in uno dei std::chrono tipi di intervallo o ora, ad day esempio , month weekday , year , e così via, usando il formato specificato. |
get_leap_second_info |
Ottiene uno leap_second_info struct. |
is_am |
Indica se un hours oggetto è AM. |
is_pm |
Indica se un hours oggetto è PM. |
locate_zone |
Ottiene un fuso orario specificato. |
make12 |
Restituisce un oggetto hours in formato di 12 ore. |
make24 |
Restituisce un oggetto hours in formato 24 ore. |
round(duration) |
Restituisce un duration oggetto arrotondato come tipo specificato. |
round(time_point) |
Restituisce un time_point oggetto arrotondato come tipo specificato. |
time_point_cast |
Esegue il cast di un oggetto time_point in un tipo specificato. |
Fuso orario correlato
Nome | Descrizione |
---|---|
current_zone |
Ottiene il fuso orario corrente. |
get_tzdb |
Ottiene la prima voce del database del fuso orario. |
get_tzdb_list |
Ottiene l'elenco delle voci del database del fuso orario. |
reload_tzdb |
Ottiene una voce aggiornata del database del fuso orario. |
remote_version |
Verifica la presenza di una voce aggiornata del database del fuso orario. |
Operatori
Nome | Descrizione |
---|---|
operator- |
Sottrarre o negare vari <chrono> oggetti. |
operator!= |
Operatore di disuguaglianza utilizzato con vari <chrono> oggetti. |
operator modulo |
Operatore per le operazioni moduli sugli oggetti duration . |
operator* |
Operatore di moltiplicazione per gli oggetti duration . |
operator/ |
Operatore di divisione per oggetti duration . |
operator/ |
Fornisce la sintassi per creare date del calendario. |
operator+ |
Aggiungere a vari <chrono> oggetti. |
operator< |
Determina se i vari <chrono> oggetti sono minori di un altro. |
operator<= |
Determina se vari <chrono> oggetti sono minori o uguali a un altro. |
operator== |
Determina se vari <chrono> oggetti sono uguali l'uno all'altro. |
operator> |
Determina se vari <chrono> oggetti sono maggiori di un altro. |
operator>= |
Determina se vari <chrono> oggetti sono maggiori o uguali a un altro. |
Typedef
Per altre informazioni sui tipi di rapporto usati nei typedef seguenti, vedere <ratio>
.
Tipi di praticità duration
Nome | Descrizione |
---|---|
typedef duration<long long, nano> nanoseconds; |
Sinonimo di un duration tipo con un periodo di graduazione di un miliardesimo (1/1.000.000.000) di un secondo. |
typedef duration<long long, micro> microseconds; |
Sinonimo di un duration tipo con un periodo di graduazione di un milione (1/1.000.000) di un secondo. |
typedef duration<long long, milli> milliseconds; |
Sinonimo di un duration tipo con un periodo di graduazione pari a un millesimo (1/1.000) di un secondo. |
typedef duration<long long> seconds; |
Sinonimo di un duration tipo con un punto di graduazione di 1 secondo. |
typedef duration<int, ratio<60>> minutes; |
Sinonimo di un duration tipo con un periodo di graduazione di 1 minuto. |
typedef duration<int, ratio<3600>> hours; |
Sinonimo di un duration tipo con un periodo di graduazione di 1 ora. |
Tipi di praticità time_point
Nome | Descrizione |
---|---|
file_time |
Sinonimo di time_point<file_clock, Duration> . Rappresenta un oggetto time_point per un oggetto file_clock . Specificare Duration , ad esempio file_time<seconds> ft; . |
gps_seconds |
Sinonimo di gps_time<seconds>; Un conteggio di secondi, rappresentato da un time_point oggetto associato a un oggetto gps_clock . |
gps_time |
Sinonimo di time_point<gps_clock, Duration> . Rappresenta un oggetto time_point per un oggetto gps_clock . Specificare Duration , ad esempio gps_time<milliseconds> gps; . |
local_days |
Sinonimo di local_time<days> . Conteggio dei giorni, rappresentato da un time_point oggetto che non è associato ad alcun fuso orario. |
local_seconds |
Sinonimo di local_time<seconds> . |
local_time |
Sinonimo di time_point<local_t, Duration> . Rappresenta un oggetto time_point per un'ora locale non ancora associata a un fuso orario. Specificare Duration , ad esempio local_time<seconds> lt; . Un local_time è un'ora locale da qualche parte. Non è l'ora locale corrente dell'orologio del computer. Solo quando si associa un oggetto local_time a un time_zone oggetto si ottiene un punto nel tempo che può essere convertito in ora UTC o l'ora in un fuso orario specifico. |
sys_days |
Sinonimo di sys_time<days> . Conteggio dei giorni dall'epoca del system_clock, rappresentato da un time_point oggetto associato a un oggetto system_clock . |
sys_seconds |
Sinonimo di sys_time<seconds> . Conteggio dei secondi non intercalari dal periodo di system_clock (1 gennaio 1970 00:00:00 UTC), rappresentato da un time_point oggetto associato a un system_clock oggetto . |
sys_time |
Sinonimo di time_point<system_clock, Duration> . Specificare Duration , ad esempio sys_time<seconds> st; . Rappresenta un time_point oggetto restituito da system_clock::now() . Rappresenta l'ora Unix, che si avvicina strettamente all'ora UTC. |
tai_seconds |
Sinonimo di tai_time<seconds> . Conteggio di secondi, rappresentato da un time_point oggetto associato a un oggetto tai_clock . |
tai_time |
Sinonimo di time_point<tai_clock, Duration> . Specificare Duration , ad esempio . tai_time<seconds> tt; Rappresenta un oggetto time_point per un oggetto tai_clock . |
utc_seconds |
Sinonimo di utc_time<seconds>; |
utc_time |
Sinonimo di time_point<utc_clock, Duration> . Specificare Duration , ad esempio . utc_time<seconds> ut; Rappresenta un oggetto time_point per un oggetto utc_clock . |
Tratti di tipo
Nome | Descrizione |
---|---|
clock_time_conversion |
Tratto che specifica come convertire un oggetto da un time_point orologio a un altro. |
is_clock | Controllare se un tipo è un orologio. |
treat_as_floating_point | Controllare se un duration oggetto può essere convertito in un altro duration oggetto con un punto di graduazione diverso. |
Valori letterali
(C++11) L'intestazione <chrono>
definisce i valori letterali definiti dall'utente seguenti che è possibile usare per maggiore praticità, sicurezza dei tipi e manutenibilità del codice. Questi valori letterali sono definiti nello spazio dei nomi inline e sono inclusi nell'ambito literals::chrono_literals
quando std::chrono
si trova nell'ambito.
Dichiarazione | Descrizione |
---|---|
hours operator "" h(unsigned long long Val) |
Specifica le ore come valore integrale. |
duration<double, ratio<3600>> operator "" h(long double Val) |
Specifica le ore come valore a virgola mobile. |
minutes (operator "" min)(unsigned long long Val) |
Specifica i minuti come valore integrale. |
duration<double, ratio<60>> (operator "" min)( long double Val) |
Specifica i minuti come valore a virgola mobile. |
seconds operator "" s(unsigned long long Val) |
Specifica i minuti come valore integrale. |
duration<double> operator "" s(long double Val) |
Specifica i secondi come valore a virgola mobile. |
milliseconds operator "" ms(unsigned long long Val) |
Specifica i millisecondi come valore integrale. |
duration<double, milli> operator "" ms(long double Val) |
Specifica i millisecondi come valore a virgola mobile. |
microseconds operator "" us(unsigned long long Val) |
Specifica i microsecondi come valore integrale. |
duration<double, micro> operator "" us(long double Val) |
Specifica i microsecondi come valore a virgola mobile. |
nanoseconds operator "" ns(unsigned long long Val) |
Specifica i nanosecondi come valore integrale. |
duration<double, nano> operator "" ns(long double Val) |
Specifica i nanosecondi come valore a virgola mobile. |
Gli esempi seguenti illustrano come usare <chrono>
valori letterali:
constexpr auto day = 24h;
constexpr auto week = 24h* 7;
constexpr auto my_duration_unit = 108ms;