Condividi tramite


<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 su QueryPerformanceCounter()
  • high_resolution_clock è ora un typedef per steady_clock Nell'implementazione steady_clock::time_point di Microsoft C++ è ora un typedef per chrono::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 successiva 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 nomistd:

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 durationRep.
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_timeoggetto 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 dayesempio , monthweekday, 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_clockoggetto .
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_pointper 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.

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;

Vedi anche

Riferimento file di intestazione