Aller au contenu principal
    Standards5 min de lecture

    Timestamp Unix vs ISO 8601 : comparatif et choix

    Le timestamp Unix (1738329600) et la date ISO 8601 (2026-02-01T00:00:00Z) sont deux représentations équivalentes. Voici quand choisir l'une ou l'autre.

    Le timestamp Unix compte le nombre de secondes écoulées depuis le 1er janvier 1970 UTC (l'epoch). Le format ISO 8601 écrit la date sous forme lisible. Les deux sont équivalents pour stocker un instant, mais leurs usages diffèrent.

    Définitions

    • Timestamp Unix — entier représentant les secondes (ou millisecondes) depuis 1970-01-01T00:00:00Z. Exemple : 1738329600 = 2026-02-01T00:00:00Z.
    • ISO 8601 — chaîne textuelle YYYY-MM-DDTHH:MM:SSZ. Exemple : 2026-02-01T00:00:00Z.

    Comparatif

    CritèreTimestamp UnixISO 8601
    Taille (32-bit int / texte)4-8 octets20-25 octets
    Lisibilité humaineFaibleExcellente
    TriNumérique (rapide)Alphabétique (= chronologique)
    Calcul de duréeSoustraction directeNécessite parsing
    Fuseau encodéNon (toujours UTC)Oui (Z ou ±HH:MM)
    Compatible JSONNumberString
    Lisible dans un logNonOui

    Quand utiliser Unix timestamp

    • Calculs de durée intensifs (différences en millisecondes).
    • Échanges binaires (Protobuf, MessagePack).
    • Stockage compact dans une base time-series.
    • Tri rapide sur un index numérique.

    Quand utiliser ISO 8601

    • API REST (JSON) — la lisibilité aide au debug.
    • Logs applicatifs et serveur.
    • Bases SQL (type TIMESTAMPTZ).
    • Tout échange avec un humain dans la boucle.

    Le piège du bug de l'an 2038

    Un timestamp Unix stocké en int32 signé déborde le 19 janvier 2038 à 03:14:07 UTC. Tout système legacy utilisant un entier 32-bit pour ses timestamps doit migrer vers du 64-bit avant cette date. ISO 8601 ne souffre pas de ce problème.

    Convertir entre Unix et ISO 8601

    Conversion rapide

    // JavaScript
    const ts = Math.floor(Date.now() / 1000);          // 1738329600
    const iso = new Date(ts * 1000).toISOString();     // "2026-02-01T00:00:00.000Z"
    
    // Python
    import time
    ts = int(time.time())
    iso = datetime.fromtimestamp(ts, tz=timezone.utc).isoformat()
    
    // SQL (PostgreSQL)
    SELECT to_timestamp(1738329600);                   -- 2026-02-01 00:00:00+00
    SELECT extract(epoch FROM now())::bigint;          -- timestamp courant

    Pour aller plus loin