Partager via


<chrono>

Incluez l’en-tête <chrono> standard pour définir des classes et des fonctions qui représentent et manipulent des durées et des instants de temps.

À compter de Visual Studio 2015, l’implémentation steady_clock a changé pour répondre aux exigences C++ Standard pour la convivialité et la monotonie :

  • steady_clock est maintenant basé sur QueryPerformanceCounter()
  • high_resolution_clock est maintenant un typedef pour steady_clock l’implémentation Microsoft C++, steady_clock::time_point est maintenant pour typedef chrono::time_point<steady_clock>. Toutefois, ce n’est pas nécessairement le cas pour d’autres implémentations.

Spécifications

En-tête : <chrono>

Les législatures régionales apportent occasionnellement des modifications aux fuseaux horaires, et un organisme international de normes spécifie quand de nouvelles secondes bissextiles doivent être prises en compte. Une base de données de ces modifications a été ajoutée à Windows 10. Plus précisément :

Fonctionnalité Version du client Version du serveur
Mises à jour de la base de données Leap second Windows 10, version 1809 ou ultérieure Windows Server 2019 ou ultérieur
Prise en charge des fuseaux horaires Windows 10 version 1903/19H1 ou ultérieure Windows Server 2022 ou ultérieur

L’utilisation des fonctionnalités de fuseau horaire sur les versions antérieures de Windows entraîne une erreur d’exécution.

Espace de noms : std

Types calendriques

Nom Description
Struct common_type Décrit les spécialisations du modèle common_type de classe pour les instanciations de duration et time_point.
day, classe Un jour du mois. Par exemple, le 25e jour du mois.
duration, classe Intervalle de temps.
Struct duration_values Fournit des valeurs spécifiques pour le paramètre de modèle durationRep.
hh_mm_ss, classe Fractionne en duration heures :minutes :secondes.
last_spec Utilisé pour indiquer le dernier élément d’un mois tel que le dernier jour de la semaine d’un mois (le dernier mardi de février 2020) ou le dernier jour d’un mois (le dernier jour d’avril 2019).
leap_second, classe Date et valeur d’un saut de saut inséré.
Struct leap_second_info Données retournées par get_leap_second_info.
month, classe Un mois d’un an. Par exemple, juillet.
month_day, classe Un jour spécifique d’un mois spécifique. Par exemple, le 30 juillet.
month_day_last, classe Le dernier jour d’un mois.
month_weekday, classe Le nième jour de semaine d’un mois spécifique.
month_weekday_last, classe Le nième jour de semaine d’un mois spécifique.
time_point, classe Limite dans le temps.
weekday, classe Un jour de la semaine.
weekday_last, classe Le dernier jour de semaine d’un mois.
weekday_indexed, classe Combine un jour de la semaine avec un index qui représente le jour de la semaine du mois.
year, classe Une année dans le calendrier grégorien.
year_month, classe Une année et un mois. Le jour n’est pas spécifié.
year_month_day, classe Un an, un mois et un jour.
year_month_day_last, classe Dernier jour d’un mois et d’une année spécifiques.
year_month_weekday, classe Année, mois et nième jour de semaine spécifique du mois.
year_month_weekday_last, classe Année spécifique, mois et dernier jour de semaine du mois.

Horloges

Nom Description
file_clock, classe Alias de l’horloge utilisée pour std::filesystem::file_time_type, qui est utilisé pour exprimer les horodatages de fichiers.
gps_clock, classe Horloge qui garde le temps GPS. Mesure l’heure à partir du premier dimanche de janvier 1980 à 00:00:00 UTC.
Struct high_resolution_clock Horloge avec une période de graduation nanoseconde.
Struct local_t Pseudo-horloge utilisée comme argument du time_point modèle pour indiquer que l’heure time_point locale représente.
Struct steady_clock Une steady horloge. Cette horloge est préférée pour mesurer les intervalles de temps.
Struct system_clock Horloge basée sur l’horloge en temps réel du système.
tai_clock, classe Mesure l’heure atomique internationale (TAI) à partir du jeudi 1er janvier 1958 à 00:00:00. Cette horloge ne tient pas compte des secondes bissextiles.
utc_clock, classe Mesure l’heure depuis 00:00:00 UTC le jeudi 1er janvier 1970. Cette horloge compte pour les secondes bissextiles et est la norme de temps utilisée dans le monde entier.

Fuseaux horaires

Nom Description
choose Énumération qui spécifie comment résoudre la conversion ambiguë d’un local_time en .sys_time
local_info Fournit une interface de bas niveau en informations de fuseau horaire sur le résultat de la conversion d’un local_time en un sys_time.
sys_info Fournit une interface de bas niveau en informations de fuseau horaire sur le résultat de la conversion d’un sys_time en un local_time.
time_zone, classe Toutes les transitions de fuseau horaire pour une zone géographique spécifique.
time_zone_link, classe Un autre nom pour un time_zone.
Struct tzdb Représente une copie de la base de données de fuseau horaire.
tzdb_list, classe Liste singleton des bases de données de fuseau horaire.
zoned_time, classe Appairage d’un time_zone et d’une time_point précision spécifiée.
Struct zoned_traits Utilisé pour associer un autre fuseau horaire par défaut à un zoned_time, et éventuellement mapper un nom personnalisé à ce fuseau horaire par défaut.

Exceptions

Nom Description
ambiguous_local_time Erreur levée lorsqu’une local_time valeur est convertie en un sys_time résultat et que le résultat est ambigu.
nonexistent_local_time Erreur levée lorsqu’une local_time valeur est convertie en un sys_time et que le résultat est une heure qui n’existe pas.

Functions

Nom Description
ceil(duration) Retourne l’objet ceil duration sous la forme d’un type spécifié.
ceil(time_point) Retourne l’objet ceil time_point sous la forme d’un type spécifié.
clock_cast Convertit une horloge d’une time_point horloge en équivalent time_point pour une autre horloge.
duration_cast Caste un objet duration en un type spécifié.
floor(duration) Retourne l’objet floor duration sous la forme d’un type spécifié.
floor(time_point) Retourne l’objet floor time_point sous la forme d’un type spécifié.
from_stream() Analysez le flux d’entrée dans l’un std::chrono des types de temps ou d’intervalle tels que day, , monthweekday, year, etc. à l’aide du format spécifié.
get_leap_second_info Obtient un leap_second_info struct.
is_am Indique si un hours objet est AM.
is_pm Indique si un hours objet est PM.
locate_zone Obtient un fuseau horaire spécifié.
make12 Retourne un hours formulaire de 12 heures.
make24 Retourne un hours formulaire de 24 heures.
round(duration) Retourne un duration objet arrondi en tant que type spécifié.
round(time_point) Retourne un time_point objet arrondi en tant que type spécifié.
time_point_cast Caste un objet time_point en un type spécifié.

Fuseau horaire associé

Nom Description
current_zone Obtient le fuseau horaire actuel.
get_tzdb Obtient la première entrée de base de données de fuseau horaire.
get_tzdb_list Obtient la liste des entrées de base de données de fuseau horaire.
reload_tzdb Obtient une entrée de base de données de fuseau horaire mise à jour.
remote_version Recherche une entrée de base de données de fuseau horaire mise à jour.

Opérateurs

Nom Description
operator- Soustraire ou négation différents <chrono> objets.
operator!= Opérateur d’inégalité utilisé avec différents <chrono> objets.
operator modulo Opérateur pour opérations de modulo sur des objets duration.
operator* Opérateur de multiplication pour les objets duration.
operator/ Opérateur de division pour les objets duration.
operator/ Fournit une syntaxe pour créer des dates de calendrier.
operator+ Ajouter à différents <chrono> objets.
operator< Détermine si différents <chrono> objets sont inférieurs à un autre.
operator<= Détermine si différents <chrono> objets sont inférieurs ou égaux à un autre.
operator== Détermine si différents <chrono> objets sont égaux les uns aux autres.
operator> Détermine si différents <chrono> objets sont supérieurs à un autre.
operator>= Détermine si différents <chrono> objets sont supérieurs ou égaux à un autre.

Typedefs

Pour plus d’informations sur les types de ratios utilisés dans les typesdefs suivants, consultez <ratio>.

Types pratiques duration

Nom Description
typedef duration<long long, nano> nanoseconds; Synonyme d’un duration type qui a une période de graduation d’un milliardième (1/1 000 000 000) d’une seconde.
typedef duration<long long, micro> microseconds; Synonyme d’un duration type qui a une période de graduation d’un millionième (1/1 000 000) d’une seconde.
typedef duration<long long, milli> milliseconds; Synonyme d’un duration type qui a une période de graduation d’un millième (1/1 000) d’une seconde.
typedef duration<long long> seconds; Synonyme d’un duration type qui a une période de graduation de 1 seconde.
typedef duration<int, ratio<60>> minutes; Synonyme d’un duration type qui a une période de graduation de 1 minute.
typedef duration<int, ratio<3600>> hours; Synonyme d’un duration type qui a une période de graduation de 1 heure.

Types pratiques time_point

Nom Description
file_time Synonyme de time_point<file_clock, Duration>. Représente un time_point pour un file_clock. Vous spécifiez , Durationpar exemple, file_time<seconds> ft;.
gps_seconds Synonyme d’un gps_time<seconds>; nombre de secondes, représenté par un time_point associé à un gps_clock.
gps_time Synonyme de time_point<gps_clock, Duration>. Représente un time_point pour un gps_clock. Vous spécifiez , Durationpar exemple, gps_time<milliseconds> gps;.
local_days Synonyme de local_time<days>. Nombre de jours, représenté par un time_point fuseau horaire qui n’est associé à aucun fuseau horaire.
local_seconds Synonyme de local_time<seconds>.
local_time Synonyme de time_point<local_t, Duration>. Représente une time_point heure locale qui n’est pas encore associée à un fuseau horaire. Vous spécifiez , Durationpar exemple, local_time<seconds> lt;. A local_time est une heure locale quelque part. Ce n’est pas l’heure locale actuelle de l’horloge de votre ordinateur. Uniquement lorsque vous associez un local_time point dans le temps à un time_zone point qui peut être converti en heure UTC ou à l’heure dans un fuseau horaire spécifique.
sys_days Synonyme de sys_time<days>. Nombre de jours depuis l’époque du system_clock, représenté par un time_point associé à un system_clock.
sys_seconds Synonyme de sys_time<seconds>. Nombre de secondes non bissextiles depuis l’époque de system_clock (1er janvier 1970 00:00:00 UTC), représenté par un time_point associé à un system_clock.
sys_time Synonyme de time_point<system_clock, Duration>. Vous spécifiez , Durationpar exemple, sys_time<seconds> st;. Représente un time_point retour à partir de system_clock::now(). Il représente l’heure Unix, qui correspond étroitement à l’heure UTC.
tai_seconds Synonyme de tai_time<seconds>. Nombre de secondes, représenté par un time_point associé à un tai_clock.
tai_time Synonyme de time_point<tai_clock, Duration>. Vous fournissez , Durationpar exemple, tai_time<seconds> tt;. Représente un time_point pour un tai_clock.
utc_seconds Synonyme de utc_time<seconds>;
utc_time Synonyme de time_point<utc_clock, Duration>. Vous fournissez , Durationpar exemple, utc_time<seconds> ut;. Représente un time_point pour un utc_clock.

Caractéristiques de type

Nom Description
clock_time_conversion Trait qui spécifie comment convertir une time_point horloge en une autre.
is_clock Vérifiez si un type est une horloge.
treat_as_floating_point Vérifiez si un duration peut être converti en un autre duration qui a une période de graduation différente.

Littéraux

(C++11) L’en-tête <chrono> définit les littéraux définis par l’utilisateur suivants que vous pouvez utiliser pour plus de commodité, de sécurité de type et de maintenance de votre code. Ces littéraux sont définis dans l’espace literals::chrono_literals de noms inline et sont dans l’étendue lorsqu’ils std::chrono se trouvent dans l’étendue.

Déclaration Description
hours operator "" h(unsigned long long Val) Spécifie les heures comme valeur intégrale.
duration<double, ratio<3600>> operator "" h(long double Val) Spécifie les heures comme valeur à virgule flottante.
minutes (operator "" min)(unsigned long long Val) Spécifie les minutes comme valeur intégrale.
duration<double, ratio<60>> (operator "" min)( long double Val) Spécifie les minutes comme valeur à virgule flottante.
seconds operator "" s(unsigned long long Val) Spécifie les minutes comme valeur intégrale.
duration<double> operator "" s(long double Val) Spécifie les secondes comme valeur à virgule flottante.
milliseconds operator "" ms(unsigned long long Val) Spécifie les millisecondes comme valeur intégrale.
duration<double, milli> operator "" ms(long double Val) Spécifie les millisecondes comme valeur à virgule flottante.
microseconds operator "" us(unsigned long long Val) Spécifie les microsecondes comme valeur intégrale.
duration<double, micro> operator "" us(long double Val) Spécifie les microsecondes comme valeur à virgule flottante.
nanoseconds operator "" ns(unsigned long long Val) Spécifie les nanosecondes comme valeur intégrale.
duration<double, nano> operator "" ns(long double Val) Spécifie les nanosecondes comme valeur à virgule flottante.

Les exemples suivants montrent comment utiliser <chrono> des littéraux :

constexpr auto day = 24h;
constexpr auto week = 24h* 7;
constexpr auto my_duration_unit = 108ms;

Voir aussi

Informations de référence sur les fichiers d’en-tête