Date and time library
C++ inclut la prise en charge de deux types de manipulation du temps :
- La bibliothèque chrono , une collection flexible de types qui suivent le temps avec différents degrés de précision (par exemple, std::chrono::time_point ).
- Bibliothèque de date et heure de style C (par exemple, std::time ).
Table des matières |
Bibliothèque Chrono (depuis C++11)
La bibliothèque
chrono
définit plusieurs types principaux ainsi que des fonctions utilitaires et des typedefs courants :
|
(depuis C++20) |
Horloges
Une horloge se compose d'un point de départ (ou époque) et d'une fréquence de tic. Par exemple, une horloge peut avoir une époque du 1er janvier 1970 et tiquer chaque seconde. C++ définit plusieurs types d'horloge :
|
Défini dans l'en-tête
<chrono>
|
|
|
Défini dans l'espace de noms
std::chrono
|
|
|
(C++11)
|
horloge système à partir de l'horloge temps réel globale
(classe) |
|
(C++11)
|
horloge monotone qui ne sera jamais ajustée
(classe) |
|
(C++11)
|
l'horloge avec la période de tic la plus courte disponible
(classe) |
|
(C++20)
|
détermine si un type est une
Clock
(modèle de classe) (modèle de variable) |
|
(C++20)
|
Clock
pour le temps universel coordonné (UTC)
(classe) |
|
(C++20)
|
Clock
pour le temps atomique international (TAI)
(classe) |
|
(C++20)
|
Clock
pour le temps GPS
(classe) |
|
(C++20)
|
Clock
utilisé pour
file time
(typedef) |
|
(C++20)
|
pseudo-horloge représentant l'heure locale
(classe) |
Point temporel
Un point temporel est une durée de temps qui s'est écoulée depuis l'époque d'une horloge spécifique.
|
Défini dans l'en-tête
<chrono>
|
|
|
Défini dans l'espace de noms
std::chrono
|
|
|
(C++11)
|
un point dans le temps
(modèle de classe) |
|
(C++20)
|
classe de traits définissant comment convertir les points temporels d'une horloge à une autre
(modèle de classe) |
|
(C++20)
|
convertir les points temporels d'une horloge à une autre
(modèle de fonction) |
Durée
Une durée consiste en un intervalle de temps, défini comme un certain nombre de graduations d'une unité de temps donnée. Par exemple, "42 secondes" pourrait être représenté par une durée composée de 42 graduations d'une unité de temps de 1 seconde.
|
Défini dans l'en-tête
<chrono>
|
|
|
Défini dans l'espace de noms
std::chrono
|
|
|
(C++11)
|
un intervalle de temps
(modèle de classe) |
Heure du jour (depuis C++20)
hh_mm_ss
divise une durée représentant le temps écoulé depuis minuit en heures, minutes, secondes et fractions de seconde, le cas échéant. Il s'agit principalement d'un outil de formatage.
|
Défini dans l'en-tête
<chrono>
|
|
|
Défini dans l'espace de noms
std::chrono
|
|
|
(C++20)
|
représente une heure de la journée
(modèle de classe) |
|
(C++20)
|
convertit entre un format horaire 12h/24h
(fonction) |
Calendrier (depuis C++20)
|
Défini dans l'en-tête
<chrono>
|
|
|
Défini dans l'espace de noms
std::chrono
|
|
|
(C++20)
|
classe d'indication du
dernier
jour ou jour de la semaine dans un mois
(classe) |
|
(C++20)
|
représente un jour d'un mois
(classe) |
|
(C++20)
|
représente un mois d'une année
(classe) |
|
(C++20)
|
représente une année dans le calendrier grégorien
(classe) |
|
(C++20)
|
représente un jour de la semaine dans le calendrier grégorien
(classe) |
|
(C++20)
|
représente le n
ème
weekday
d'un mois
(classe) |
|
(C++20)
|
représente le dernier
weekday
d'un mois
(classe) |
|
(C++20)
|
représente un
day
spécifique d'un
month
spécifique
(classe) |
|
(C++20)
|
représente le dernier jour d'un
month
spécifique
(classe) |
|
(C++20)
|
représente le n
ème
weekday
d'un
month
spécifique
(classe) |
|
(C++20)
|
représente le dernier
weekday
d'un
month
spécifique
(classe) |
|
(C++20)
|
représente un
month
spécifique d'une
year
spécifique
(classe) |
|
(C++20)
|
représente une
year
,
month
et
day
spécifiques
(classe) |
|
(C++20)
|
représente le dernier jour d'une
year
et d'un
month
spécifiques
(classe) |
|
(C++20)
|
représente le n
ème
weekday
d'une
year
et d'un
month
spécifiques
(classe) |
|
(C++20)
|
représente le dernier
weekday
d'une
year
et d'un
month
spécifiques
(classe) |
|
(C++20)
|
syntaxe conventionnelle pour la création de dates du calendrier grégorien
(fonction) |
Fuseau horaire (depuis C++20)
|
Défini dans l'en-tête
<chrono>
|
|
|
Défini dans l'espace de noms
std::chrono
|
|
|
(C++20)
|
décrit une copie de la
base de données des fuseaux horaires IANA
(classe) |
|
(C++20)
|
représente une liste chaînée de
tzdb
(classe) |
|
accède et contrôle les informations globales de la base de données des fuseaux horaires
(fonction) |
|
|
(C++20)
|
localise un
time_zone
basé sur son nom
(fonction) |
|
(C++20)
|
retourne le
time_zone
actuel
(fonction) |
|
(C++20)
|
représente un fuseau horaire
(classe) |
|
(C++20)
|
représente des informations sur un fuseau horaire à un instant particulier
(classe) |
|
(C++20)
|
représente des informations sur une conversion d'heure locale en heure UNIX
(classe) |
|
(C++20)
|
sélectionne comment une heure locale ambiguë doit être résolue
(énumération) |
|
(C++20)
|
classe de traits pour les pointeurs de fuseaux horaires utilisés par
zoned_time
(classe template) |
|
(C++20)
|
représente un fuseau horaire et un point dans le temps
(classe) |
|
(C++20)
|
contient des informations sur l'insertion d'une seconde intercalaire
(classe) |
|
(C++20)
|
informations d'insertion de seconde intercalaire
(classe) |
|
(C++20)
|
obtient les informations d'insertion de seconde intercalaire depuis un objet
utc_time
(fonction template) |
|
(C++20)
|
représente un nom alternatif pour un fuseau horaire
(classe) |
|
(C++20)
|
exception levée pour signaler qu'une heure locale n'existe pas
(classe) |
|
(C++20)
|
exception levée pour signaler qu'une heure locale est ambiguë
(classe) |
Littéraux (depuis C++14)
|
Défini dans l'en-tête
<chrono>
|
|
|
Défini dans l'espace de noms en ligne
std::literals::chrono_literals
|
|
|
(C++20)
|
un littéral
std::chrono::year
représentant une année particulière
(fonction) |
|
(C++20)
|
un littéral
std::chrono::day
représentant un jour d'un mois
(fonction) |
|
(C++14)
|
un littéral
std::chrono::duration
représentant des heures
(fonction) |
|
(C++14)
|
un littéral
std::chrono::duration
représentant des minutes
(fonction) |
|
(C++14)
|
un littéral
std::chrono::duration
représentant des secondes
(fonction) |
|
(C++14)
|
un littéral
std::chrono::duration
représentant des millisecondes
(fonction) |
|
(C++14)
|
un littéral
std::chrono::duration
représentant des microsecondes
(fonction) |
|
(C++14)
|
un littéral
std::chrono::duration
représentant des nanosecondes
(fonction) |
Entrées/Sorties Chrono (since C++20)
|
Défini dans l'en-tête
<chrono>
|
|
|
Défini dans l'espace de noms
std::chrono
|
|
|
(C++20)
|
analyse un objet
chrono
depuis un flux
(modèle de fonction) |
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_chrono
|
201510L
|
(C++17) | Fonctions d'arrondi pour std::chrono::duration et std::chrono::time_point |
201611L
|
(C++17) | constexpr pour toutes les fonctions membres de std::chrono::duration et std::chrono::time_point | |
201907L
|
(C++20) | Calendriers et Fuseaux horaires | |
202306L
|
(C++26) |
Support de hachage
pour les classes de valeur
std::chrono
|
Bibliothèque de date et heure de style C
Sont également fournies les fonctions de date et heure de style C, telles que std::time_t , std::difftime , et CLOCKS_PER_SEC .
Exemple
#include <chrono> #include <iostream> long Fibonacci(unsigned n) { return n < 2 ? n : Fibonacci(n - 1) + Fibonacci(n - 2); } int main() { // Mesure et affiche le temps d'exécution d'un appel de fonction. const auto start{std::chrono::steady_clock::now()}; const auto fb{Fibonacci(42)}; const auto finish{std::chrono::steady_clock::now()}; const std::chrono::duration<double> elapsed_seconds{finish - start}; std::cout << "Fibonacci(42): " << fb << "\nTemps écoulé: "; // std::cout << elapsed_seconds.count() << "s\n"; // Avant C++20 std::cout << elapsed_seconds << '\n'; // Opérateur << de chrono::duration en C++20 // Affiche le temps UTC et local. const auto tp_utc{std::chrono::system_clock::now()}; std::cout << "L'heure actuelle 'UTC' est: " << tp_utc << "\n" "L'heure actuelle 'Locale' est: " << std::chrono::current_zone()->to_local(tp_utc) << '\n'; }
Sortie possible :
Fibonacci(42): 267914296 Temps écoulé: 0.728532s L'heure actuelle 'UTC' est: 2025-02-10 06:22:39.420666960 L'heure actuelle 'Locale' est: 2025-02-10 09:22:39.420666960