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.
L'objet Date de JavaScript
L'objet Date intégré à JavaScript stocke le temps en interne comme le nombre de millisecondes depuis l'epoch Unix (1er janvier 1970 00:00:00 UTC). Chaque instance Date n'est finalement que cet entier. Les différentes méthodes — toISOString(), toString(), toLocaleString() — sont autant de façons d'afficher cette même valeur sous-jacente.
Pièges fréquents avec les dates en JavaScript
Plusieurs comportements de Date piègent même les développeurs expérimentés :
- Les mois commencent à zéro : janvier vaut 0 et décembre 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) crée le 1er janvier 2024 en heure locale (le mois commence à 0)
- Date.now() renvoie des millisecondes ; Math.floor(Date.now() / 1000) donne des secondes Unix
- Évitez d'ajouter des jours en ajoutant 86400000 ms : l'heure d'été peut décaler le résultat
Gérer les fuseaux horaires en JavaScript
L'objet Date de JavaScript n'a pas de propriété de fuseau : il est toujours stocké en UTC. Les conversions de fuseau se font à l'affichage, via 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 pour un format sur mesure
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, le timestamp est bon et seul le fuseau d'affichage a changé.
- getTime est toujours en millisecondes depuis l'epoch Unix
- Les secondes Unix sont getTime divisé par 1000 et arrondi vers le bas
- toISOString affiche toujours l'UTC avec un Z final
- toString et toLocaleString affichent le fuseau local du navigateur sauf si les options le remplacent