timestampinfo.fr
Outils & documentation

LA DOCUMENTATION DU TEMPS

Manipuler les timestamps en C

Lire l’heure, afficher une date UTC et calculer un intervalle dans un environnement POSIX.

time_t et l’Epoch Unix

Dans un environnement POSIX, time_t représente le temps en secondes depuis l’Epoch. Le langage C seul ne garantit pas cette représentation sur toutes les plateformes. Ne supposez pas non plus que time_t possède toujours 32 bits.

Afficher un timestamp en UTC

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

int main(void) {
    time_t timestamp = (time_t)1711972800;
    struct tm *utc = gmtime(&timestamp);
    char output[32];
    if (utc == NULL) return 1;
    if (strftime(output, sizeof output,
                 "%Y-%m-%dT%H:%M:%SZ", utc) == 0) return 1;
    puts(output); /* 2024-04-01T12:00:00Z */
    return 0;
}

Calculer une différence

difftime(end, start) calcule une différence en secondes. Il évite de supposer directement le type arithmétique sous-jacent à time_t.

time_t start = (time_t)1711972800;
time_t end = (time_t)1711981800;
double elapsed = difftime(end, start);
/* elapsed = 9000.0 */

Les points à vérifier

  • gmtime affiche UTC ; localtime utilise le fuseau local.
  • Les fonctions historiques peuvent utiliser une zone mémoire partagée. Dans un programme concurrent POSIX, étudiez les variantes gmtime_r et localtime_r.
  • mktime interprète une date locale. Il ne faut pas l’utiliser comme convertisseur UTC implicite.
  • Pour mesurer une durée d’exécution POSIX, utilisez clock_gettime(CLOCK_MONOTONIC, ...).

Vérifiez la taille et les capacités de la bibliothèque pour les dates au-delà de 2038. Le type du processeur ne suffit pas à déterminer tous les formats manipulés.

Références

Documentation de référence

Ouvrir le convertisseur