Date en JavaScript : représenter, lire et formater un instant

L'objet Date représente un instant précis en JavaScript. Il se lit par composants, se compare en millisecondes et se formate avec Intl.
3 min de lecture
Believemy logo

La gestion du temps est le domaine où l'on se fait avoir le plus souvent, dans tous les langages. JavaScript ajoute deux particularités bien à lui : les mois numérotés à partir de zéro, et une conversion de fuseau horaire qui se déclenche sans prévenir.

Une fois ces deux points compris, l'objet Date devient prévisible, et la mise en forme se délègue entièrement à l'interface d'internationalisation du navigateur.


Définition

Un objet Date représente un instant unique, stocké en interne comme un nombre de millisecondes écoulées depuis le 1er janvier 1970 à minuit UTC. Toutes les méthodes de lecture ne sont que des façons différentes de présenter ce même nombre.

JAVASCRIPT
const d = new Date("2026-08-20T10:00:00Z");

console.log(d.getFullYear());  // 2026
console.log(d.getUTCMonth());  // 7 et non 8 : les mois partent de 0
console.log(d.getUTCDate());   // 20
console.log(d.toISOString());  // "2026-08-20T10:00:00.000Z"

console.log(typeof d.getTime());  // "number"

L'opérateur new est obligatoire. Sans lui, Date() renvoie une chaîne au lieu d'un objet, ce qui casse tout le reste sans message d'erreur.

Bon à savoir

Les mois vont de 0 à 11, mais les jours du mois de 1 à 31. Cette incohérence date des origines du langage et ne sera jamais corrigée. getDay(), de son côté, renvoie le jour de la semaine, avec 0 pour dimanche.


Le piège du fuseau horaire

La façon d'écrire la date au moment de sa création change son interprétation.

ÉcritureInterprétation
"2026-08-20"Minuit UTC
"2026-08-20T10:00:00Z"10 h UTC, sans ambiguïté
new Date(2026, 7, 20)Minuit dans le fuseau local

La première ligne est celle qui surprend : une date seule est lue en UTC, puis affichée dans le fuseau local. Sur un poste situé à l'ouest de Greenwich, à New York par exemple, elle recule d'un jour dès qu'on l'affiche avec getDate(). La règle sûre est de stocker en UTC et de ne convertir qu'à l'affichage.


Formater et calculer

Ne construisez jamais une date lisible à la main. Intl.DateTimeFormat connaît les langues, les ordres jour-mois et les noms de mois.

JAVASCRIPT
const d = new Date("2026-08-20T10:00:00Z");

console.log(d.toLocaleDateString("fr-FR", {
  timeZone: "UTC", weekday: "long", day: "numeric", month: "long", year: "numeric"
}));
// "jeudi 20 août 2026"

const debut = new Date("2026-01-01T00:00:00Z");
const fin = new Date("2026-01-08T00:00:00Z");
console.log((fin - debut) / 86400000);  // 7 jours

La soustraction fonctionne parce que les deux objets se convertissent en nombre de millisecondes, un cas de Coercition (conversion de type) qui, pour une fois, rend service. Diviser par 86 400 000 donne un nombre de jours.


Questions fréquentes

Question

Comment obtenir la date du jour ?

new Date() sans argument renvoie l'instant courant, et Date.now() le même instant directement en millisecondes. La seconde forme est préférable pour mesurer une durée, puisqu'elle évite de créer un objet dont on n'utiliserait qu'un seul nombre.


Question

Comment ajouter des jours à une date ?

Le plus simple est de passer par setDate(d.getDate() + 7), qui gère les changements de mois et les années bissextiles tout seul. Attention, cette méthode modifie l'objet existant au lieu d'en créer un nouveau : recopiez la date avant si l'original doit rester intact.


Question

Faut-il une bibliothèque pour gérer les dates ?

De moins en moins. Intl couvre le formatage, qui était le besoin principal, et l'API Temporal arrive progressivement dans les navigateurs pour traiter les fuseaux et les durées proprement. Une bibliothèque reste justifiée sur de l'analyse de formats variés ou du calcul de calendrier avancé, beaucoup moins pour afficher une date.

Termes connexes

Découvrez notre glossaire JavaScript

Tous les mots de JavaScript expliqués simplement : mots-clés, objets natifs, méthodes, erreurs et concepts. Définitions claires et exemples qui tournent, pour apprendre et pour se dépanner.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.