Namespaces
Variants

Date and time library

From cppreference.net

C++ inclut la prise en charge de deux types de manipulation du temps :

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
horloge système à partir de l'horloge temps réel globale
(classe)
horloge monotone qui ne sera jamais ajustée
(classe)
l'horloge avec la période de tic la plus courte disponible
(classe)
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)
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)
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)
représente le n ème weekday d'un mois
(classe)
représente le dernier weekday d'un mois
(classe)
(C++20)
représente un day spécifique d'un month spécifique
(classe)
représente le dernier jour d'un month spécifique
(classe)
représente le n ème weekday d'un month spécifique
(classe)
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)
représente une year , month et day spécifiques
(classe)
représente le dernier jour d'une year et d'un month spécifiques
(classe)
représente le n ème weekday d'une year et d'un month spécifiques
(classe)
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)
localise un time_zone basé sur son nom
(fonction)
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)
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)
contient des informations sur l'insertion d'une seconde intercalaire
(classe)
informations d'insertion de seconde intercalaire
(classe)
obtient les informations d'insertion de seconde intercalaire depuis un objet utc_time
(fonction template)
représente un nom alternatif pour un fuseau horaire
(classe)
exception levée pour signaler qu'une heure locale n'existe pas
(classe)
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
un littéral std::chrono::year représentant une année particulière
(fonction)
un littéral std::chrono::day représentant un jour d'un mois
(fonction)
un littéral std::chrono::duration représentant des heures
(fonction)
un littéral std::chrono::duration représentant des minutes
(fonction)
un littéral std::chrono::duration représentant des secondes
(fonction)
un littéral std::chrono::duration représentant des millisecondes
(fonction)
un littéral std::chrono::duration représentant des microsecondes
(fonction)
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