Fonction gmtime

Entête à  inclure

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

Fonction gmtime

struct tm * gmtime( 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 temps universel UTC (Coordinated Universal Time).

Le nom de la fonction gmtime signifiant Greenwich Meridian Time. Pour culture générale, GMT correspond à l'ancien système de temps universel remplacé en 1972 par le système UTC. Bien qu'extrémement proche, il existe un écart de temps entre les deux systèmes, mais par abus de langage on continue aujourd'hui à parler de GMT en lieu et place d'UTC : c'est aussi le cas pour la librairie C.

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 = gmtime( & timestamp );

    printf( "Date and UTC 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