Temporal
JavaScript 🟡 MidDéfinition
API de dates et heures conçue pour remplacer Date : objets immuables, fuseaux horaires explicites, précision à la nanoseconde, calendriers multiples. La proposition est au Stage 4 et figure dans la liste TC39 des propositions attendues pour ES2027. Elle est livrée dans Firefox 139 (27 mai 2025), Chrome 144 (13 janvier 2026) et Node.js 26 (5 mai 2026) ; Safari est encore en développement.
Analogie
Un agenda qui sait qu'un rendez-vous à 9 h à Paris n'est pas à 9 h à Tokyo, au lieu d'une simple horloge murale.
Exemple de code
// Node 26+, Chrome 144+, Firefox 139+
const maintenant = Temporal.Now.instant();
const date = Temporal.PlainDate.from('2026-09-27');
const rdv = date.toPlainDateTime('14:30')
.toZonedDateTime('Europe/Paris');
const dans30j = rdv.add({ days: 30 }); // immuable : nouvel objet
const duree = rdv.until(dans30j); // Temporal.Duration
console.log(duree.days); // 30
Cas d'usage
Réservations, facturation, planification multi-fuseaux : partout où Date et ses décalages implicites causent des bugs.
Anti-pattern
Termes liés
En entretien
Quel problème Temporal résout-il par rapport à Date ?
Temporal propose des objets immuables, des fuseaux horaires explicites et une précision à la nanoseconde, alors que Date souffre de décalages implicites qui causent des bugs. C'est destiné aux réservations, à la facturation ou à la planification multi-fuseaux.
Où en est le support navigateur/Node de Temporal ?
La proposition est au Stage 4 TC39, listée pour ES2027, et déjà livrée dans Firefox 139, Chrome 144 et Node.js 26 ; Safari est encore en développement. Il faut donc vérifier la cible avant de l'utiliser en production.
Comment migrer proprement un code qui mélange Date et Temporal ?
Il ne faut pas mélanger les deux dans une même logique métier, mais convertir une seule fois aux frontières avec toTemporalInstant ou epochMilliseconds. Ça évite les incohérences de fuseau au milieu du calcul.
Sources
Fiche mise à jour le 2026-09-27