Fonctions de gestion des dates et du temps

© D. Mathieu     mathieu@romarin.univ-aix.fr
I.U.T.d'Aix en Provence - Département Informatique
Créé le 12/02/2001 - Dernière mise à jour : 12/11/2001

    Il existe de nombreuses fonctions permettant de manipuler les dates. La première opération consiste toujours à récupérer la date (ou le temps) interne du système au moyen de la fonction système time(), décrite par ailleurs.

    Nous ne décrirons ici que les fonctions standard C, qui peuvent aussi être utilisées en C++.

    Les dates existent sous trois formes différentes :

    Plusieurs fonctions permettent de passer d'une représentation à une autre, comme l'illustre la figure suivante :

    Elles ont pour profils :
 
char *      asctime   (const struct tm *timeptr);
char *      ctime     (const time_t *timep);
struct tm * gmtime    (const time_t *timep);
struct tm * localtime (const time_t *timep);
time_t      mktime    (struct tm *timeptr);

    Les fonctions localtime() et gmtime() transforment un temps (exprimé en seconde) en une structure qui représente respectivement un temps local (décalage horaire, horaire d'été) ou un temps universel (pas de transformation).

    En C++, types spécifiques et fonctions appartiennent à l'espace de noms std et sont accessibles au moyen du fichier inclus <ctime>.
    En C, types spécifiques et fonctions sont globales et sont accessibles au moyen du fichier inclus  <time.h>.

    La séquence suivante  :
 
std::time_t TLocal = std::mktime (std::localtime (&TLocal));

cout << "Date en temps universel : " 
     << std::asctime (std::gmtime (&TLocal));
cout << "Date en temps local     : " 
     << std::ctime (&TLocal);

permet d'afficher le temps local et le temps universel correspondant :
 
Date en temps universel : Mon Feb 12 18:41:02 2001
Date en temps local     : Mon Feb 12 19:41:02 2001

    La fonction Estampiller() [2] suivante :
 
void Estampiller (ostream & os)
{
    std::time_t t = std::time (0);
    os << "date : " << std::asctime (std::localtime (&t));

} // Estampiller()

permet d'estampiller tout affichage en temps local, par exemple :
 
// ...
catch (const CException & Ex)
{
    Estampiller (cerr);
    cerr << Ex << endl;
}



[1] La chaîne de caractères renvoyée est terminée par le caractère '\n'.

[2] Une version plus élégante de la fonction Estampiller() est proposée dans l'étude des manipulateurs.

© D. Mathieu     mathieu@romarin.univ-aix.fr
I.U.T.d'Aix en Provence - Département Informatique