Norme ISO 8601 : format date et heure standard
ISO 8601 est la norme internationale pour représenter dates et heures sans ambiguïté. Format <code>YYYY-MM-DDTHH:mm:ssZ</code>, fuseau, durées : guide complet.
La norme ISO 8601 (révision la plus récente : ISO 8601-1:2019) définit la représentation universelle des dates et heures. Elle est adoptée par les API REST, les bases de données, les protocoles réseau et les langages de programmation modernes.
Pourquoi ISO 8601 ?
Sans norme, 03/04/2026 peut désigner le 3 avril (Europe) ou le 4 mars (États-Unis). ISO 8601 supprime cette ambiguïté : du plus grand au plus petit, séparé par tirets et deux-points.
Les formats fondamentaux
| Cas | Format | Exemple |
|---|---|---|
| Date seule | YYYY-MM-DD | 2026-05-19 |
| Date + heure locale | YYYY-MM-DDTHH:mm:ss | 2026-05-19T14:30:00 |
| Date + heure UTC | YYYY-MM-DDTHH:mm:ssZ | 2026-05-19T14:30:00Z |
| Date + heure + fuseau | YYYY-MM-DDTHH:mm:ss±HH:MM | 2026-05-19T14:30:00+02:00 |
| Date + millisecondes UTC | YYYY-MM-DDTHH:mm:ss.sssZ | 2026-05-19T14:30:00.250Z |
| Semaine | YYYY-Www-D | 2026-W21-2 (mardi semaine 21) |
| Durée | PnYnMnDTnHnMnS | P1Y2M3DT4H5M6S |
| Intervalle | start/end | 2026-05-19/2026-05-31 |
Le suffixe Z : « Zulu time »
Z signifie Zero offset = UTC. Hérité du code Zulu en aéronautique. 2026-05-19T14:30:00Z et 2026-05-19T14:30:00+00:00 sont strictement équivalents.
Règles strictes vs étendues
- Forme étendue (recommandée) : avec séparateurs
-et:. - Forme basique : sans séparateurs,
20260519T143000Z. - Année : 4 chiffres obligatoires.
- Padding : tous les champs sur le nombre fixe de chiffres (
05, pas5).
Convertir vers 100 formats d'heure
Usage en JavaScript
// toISOString() retourne toujours du ISO 8601 UTC
new Date().toISOString();
// → "2026-05-19T14:30:00.250Z"
// Parser un ISO 8601
const d = new Date("2026-05-19T14:30:00+02:00");
d.toISOString(); // → "2026-05-19T12:30:00.000Z" (converti UTC)
Usage en PostgreSQL
SELECT TIMESTAMPTZ '2026-05-19T14:30:00+02:00';
-- 2026-05-19 12:30:00+00 (stocké en UTC)
Erreurs fréquentes
- Oublier le
Tentre date et heure :2026-05-19 14:30:00n'est pas strictement ISO 8601 (mais accepté par RFC 3339). - Mélanger fuseau et
Z:14:30:00Z+02:00est invalide. - Utiliser année à 2 chiffres :
26-05-19est invalide. - Confondre durée (
P) et intervalle (/).
ISO 8601 vs RFC 3339
RFC 3339 est un sous-ensemble d'ISO 8601 utilisé sur Internet (JSON, OpenAPI). Il impose des règles plus strictes : T obligatoire, fuseau obligatoire, secondes obligatoires. Toute date RFC 3339 est aussi ISO 8601, mais l'inverse n'est pas vrai.