Playground

Playground Date de JavaScript

Tapez une expression Date de JavaScript et explorez chaque format de sortie et propriété en temps réel — toISOString, toString, getTime, getFullYear et plus.

JavaScript Expression

Type any expression that returns a Date or number.

L'objet Date de JavaScript

L'objet Date intégré à JavaScript stocke le temps en interne sous forme du nombre de millisecondes depuis l'époque Unix (1er janvier 1970 00:00:00 UTC). Chaque instance Date n'est au fond que ce seul entier. Les différentes méthodes — toISOString(), toString(), toLocaleString() — sont autant de façons d'afficher cette même valeur sous-jacente.

Pièges courants avec les dates JavaScript

Plusieurs comportements de Date en JavaScript piègent même les développeurs expérimentés :

  • Les mois commencent à zéro : janvier vaut 0, décembre vaut 11 — ajoutez toujours 1 à l'affichage
  • new Date('2024-01-01') est interprété comme minuit UTC ; new Date('2024/01/01') comme minuit local
  • new Date(2024, 0, 1) construit le 1er janvier 2024 en heure locale (le mois commence à zéro)
  • Date.now() renvoie des millisecondes ; Math.floor(Date.now() / 1000) donne des secondes Unix
  • Évitez d'ajouter des jours en ajoutant 86400000ms — à cause du DST, cela peut tomber à la mauvaise heure

Travailler avec les fuseaux horaires en JavaScript

L'objet Date de JavaScript n'a pas de propriété de fuseau horaire — il est toujours stocké en UTC. Les conversions de fuseau se font à l'affichage avec l'API Intl.DateTimeFormat.

  • new Intl.DateTimeFormat('en-US', { timeZone: 'Asia/Tokyo', dateStyle: 'full', timeStyle: 'long' }).format(date)
  • date.toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' })
  • new Intl.DateTimeFormat('en-CA', { timeZone: tz }).formatToParts(date) — renvoie les parties individuelles pour un formatage personnalisé

Comment lire la sortie du playground

Le playground affiche plusieurs vues de la même valeur Date pour repérer vite les erreurs d'unité et de fuseau. Comparez d'abord getTime aux secondes Unix, puis vérifiez les chaînes ISO et locale. Si la date ISO est correcte mais que la chaîne locale paraît différente, l'horodatage est bon et seul le fuseau d'affichage a changé.

  • getTime correspond toujours aux millisecondes depuis l'époque Unix
  • Les secondes Unix valent getTime divisé par 1000 et arrondi à l'entier inférieur
  • toISOString affiche toujours l'UTC avec un Z final
  • toString et toLocaleString affichent le fuseau local du navigateur sauf si des options le remplacent