Fonction localtime

Entête à  inclure

#include <time.h>  // <ctime> en C++

Fonction localtime

struct tm * localtime( const time_t * pTime );

Cette fonction transforme un timestamp (de type time_t) en une structure de type struct tm. Les informations stockées dans la structure sont exprimée en fuseau horaire local en fonction de la configuration de votre système d'exploitation. Cette fonction réalise l'opération inverse de la fonction mktime.

Paramètre

  • pTime : un pointeur constant sur le timestamp à partir duquel générer la structure.

Valeur de retour

Cette fonction renvoie un pointeur vers la structure de type struct tm contenant les informations de temps associées au timestamp.

Il est très important de bien comprendre une chose : cette fonction n'alloue pas de nouveau bloc mémoire pour la structure retournée. En fait une instance de cette structure est réservée par la librairie <time.h> et c'est systématiquement un pointeur sur cette instance qui vous sera retournée. Il en résulte deux conséquences importantes :

  • Vous ne devez en aucun cas désallouer la structure via un appel à free en fin de traitement;
  • L'exploitation des données de cette structure n'est pas « thread-safe ». En cas d'accès concurrent à cette unique instance, il sera de votre responsabilité de synchroniser les accès (avec, pourquoi pas un mutex).

Exemple de code

#include <stdio.h>
#include <time.h>

int main( int argc, char * argv[] ) {

    time_t timestamp = time( NULL );
    struct tm * timeInfos = localtime( & timestamp );

    printf( "Date and local time : %04d/%02d/%02d %02d:%02d:%02d\n",
        timeInfos->tm_year+1900, timeInfos->tm_mon+1, timeInfos->tm_mday,
        timeInfos->tm_hour, timeInfos->tm_min, timeInfos->tm_sec
    );
            
    return 0;
}

Fonctions et types connexes