Formatez des dates en JavaScript sans bibliothèque : un outil Intl.DateTimeFormat en direct, du code YYYY-MM-DD et MM/DD/YYYY, les fuseaux horaires, le temps relatif, les plages et les pièges d'analyse à l'origine des décalages d'un jour.
Pour formater une date en JavaScript, utilisez Intl.DateTimeFormat ou toLocaleDateString avec une locale et des options, par exemple date.toLocaleDateString("en-US", { dateStyle: "long" }) pour March 5, 2026. Utilisez toISOString() pour les API, l'option timeZone pour afficher un autre fuseau, et Intl.RelativeTimeFormat pour des expressions comme il y a 3 jours.
Réponses rapides
Choisissez une locale et des options dans l'outil et copiez le code qu'il génère ; l'aperçu est formaté par votre propre navigateur. En dessous, un tableau des formats courants et des exemples exécutables pour les fuseaux, le temps relatif et les plages.
Prenez l'année locale, le mois plus un et le jour, complétés avec padStart(2, "0"), et reliez-les par des tirets. toISOString().slice(0, 10) donne aussi cette forme mais en UTC, et peut donc afficher le mauvais jour près de minuit.
new Date("2026-03-05") est lu comme minuit UTC. À l'ouest de Greenwich, ce moment correspond encore au 4 en heure locale. Analysez avec une heure ("2026-03-05T00:00") ou avec new Date(2026, 2, 5) pour obtenir minuit en heure locale.
Pas pour le formatage. Intl gère les locales, les fuseaux horaires et le temps relatif dans tous les navigateurs modernes. Les mainteneurs de Moment le décrivent eux-mêmes comme un projet historique ; pour les calculs de dates, une petite bibliothèque comme date-fns ou la nouvelle API Temporal (là où elle est disponible) fait très bien l'affaire.
Passez timeZone avec un nom IANA, par exemple { timeZone: "America/New_York", timeStyle: "short" }. L'objet Date reste le même instant ; seule sa façon d'être écrite change.
Formats courants et le code de chacun
Une chaîne ISO contenant uniquement une date est lue comme minuit UTC, mais une chaîne date-heure sans décalage est lue en heure locale. Cette différence est à l'origine de la plupart des bugs de décalage d'un jour.
Construisez-la à partir des parties locales avec padStart. L'astuce de la locale en-CA donne le même résultat, mais dépend du fait que le format de cette locale ne change pas.
timeZone prend un nom IANA. La Date elle-même n'a pas de fuseau ; seul le formatage change. Notez que timeZoneName ne peut pas être combiné avec dateStyle ou timeStyle.
Intl.RelativeTimeFormat écrit les mots ; vous choisissez l'unité. Cette fonction utilitaire choisit la plus grande unité qui convient.
formatRange supprime les parties répétées, si bien qu'une réservation du 5 au 9 du même mois se lit naturellement.
Quand aucun préréglage ne convient, récupérez les morceaux localisés et disposez-les vous-même, par exemple pour afficher le jour plus grand que le mois.
Vous travaillez avec des secondes epoch ? Utilisez le
Options d'Intl.DateTimeFormat utilisées dans l'outil
(aucun)
(votre fuseau)
Erreur : {msg}
Date et heure
Locale
Fuseau horaire
Mode
Styles prédéfinis
Choisir chaque partie
Copier le code
Commencer gratuitement · Sans carte bancaire