Développeur5 min de lecture

Timestamp Unix vs ISO 8601 : que choisir ?

Timestamp Unix pour la performance et le calcul, ISO 8601 pour la lisibilité et le contexte fuseau. Voici la matrice de décision selon votre contexte.

Tout système qui manipule des dates affronte ce choix : timestamp Unix (entier) ou ISO 8601 (chaîne). Les deux formats sont valides, mais chacun a un terrain de jeu optimal.

Tableau comparatif

CritèreTimestamp UnixISO 8601
TypeEntier (10/13 chiffres)Chaîne (20-30 caractères)
Taille4 ou 8 octets20-30 octets
Lisible par humainNon (1779798600)Oui (2026-05-19T14:30:00Z)
Fuseau intégréNon (toujours UTC implicite)Oui (suffixe Z ou ±HH:MM)
ComparaisonNumérique directeLexicographique (fonctionne car format ordonné)
Calcul de deltaSoustraction directeParsing + soustraction
Tri DBIndex numérique rapideIndex chaîne (légèrement plus lent)
ValidationToujours valideRisque de mauvais format
Bug 2038Oui en 32 bitsNon

Quand utiliser Unix time

  • Cache : TTL exprimé en secondes/ms.
  • Logs haute volumétrie : compacité critique.
  • Communications binaires : protocoles MQTT, ProtoBuf, Avro.
  • Calculs de durée : diff = now - then, aucune complexité.
  • Tokens JWT (champs iat, exp).

Quand utiliser ISO 8601

  • API REST publiques : lisibilité pour les développeurs tiers.
  • Logs lisibles : analyse à l'œil possible.
  • Documents échangés : factures, rapports, exports CSV.
  • Champs qui doivent porter un fuseau (planification d'événements).
  • Bases de données : type TIMESTAMPTZ en PostgreSQL accepte ISO 8601 et stocke en UTC.

Convertir Unix time ↔ ISO 8601

Conversion bidirectionnelle

// JavaScript
const iso = new Date(1779798600 * 1000).toISOString();
// → "2026-05-19T14:30:00.000Z"

const ts = Math.floor(new Date("2026-05-19T14:30:00Z").getTime() / 1000);
// → 1779798600

// Python
from datetime import datetime, timezone
datetime.fromtimestamp(1779798600, tz=timezone.utc).isoformat()
# → "2026-05-19T14:30:00+00:00"

datetime.fromisoformat("2026-05-19T14:30:00+00:00").timestamp()
# → 1779798600.0

Erreurs classiques

  • Confondre secondes et millisecondes : new Date(1779798600) en JavaScript donne 1970 (ms attendues). Multipliez par 1000.
  • Stocker un Unix time sans préciser l'unité : un entier seul peut être seconde, ms ou µs.
  • Stocker ISO 8601 en heure locale sans suffixe : 2026-05-19T14:30:00 est ambigu.

Pour aller plus loin