Travailler avec les dates et l'heure en JavaScript : de A à Z pour Node.js

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi la manipulation des dates en JavaScript est un défi pour le développeur

\n

La manipulation des dates et de l'heure est l'une des tâches les plus courantes et pourtant les plus délicates en développement web. Quoi de plus simple que d'obtenir la date actuelle ou de calculer la différence entre deux événements ? En pratique, les développeurs JavaScript (Node.js) rencontrent de nombreux pièges : fuseaux horaires, format ISO, comportement contre-intuitif de la méthode getMonth() et bibliothèques obsolètes. Dans cet article, nous analyserons la manipulation des dates, des principes de base aux techniques avancées, en utilisant uniquement l'objet standard Date et la bibliothèque moderne date-fns.

\n\n

1. Bases de l'objet Date dans Node.js

\n

L'objet natif Date est le fondement de la gestion du temps. Il stocke le nombre de millisecondes écoulées depuis le 1er janvier 1970 (époque Unix). Examinons les opérations de base.

\n\n

Création et obtention de l'heure actuelle

\n

La façon la plus simple de créer un objet date est d'appeler new Date() sans arguments. Cela renvoie la date et l'heure actuelles sur le serveur.

\n
// Date et heure actuelles (dans le fuseau horaire du serveur)\nconst now = new Date();\nconsole.log(now); // Exemple : 2024-05-20T14:30:00.000Z\n\n// Création à partir d'une chaîne ISO\nconst specificDate = new Date('2024-12-25T10:00:00');\nconsole.log(specificDate); // 2024-12-25T10:00:00.000Z\n\n// Création à partir de composants (année, mois, jour, heures, minutes, secondes)\nconst birthday = new Date(1990, 5, 15); // Attention : le mois 5 = Juin !\nconsole.log(birthday); // 1990-06-15T00:00:00.000Z
\n

Remarque importante : Les mois en JavaScript sont indexés à partir de 0 (Janvier — 0, Décembre — 11). C'est une source fréquente de bugs.

\n\n

Méthodes pour obtenir les composants de la date

\n

Pour extraire les parties individuelles de la date, on utilise des getters. Rappelez-vous qu'ils renvoient les valeurs dans le fuseau horaire local du serveur.

\n
const date = new Date('2024-03-15T12:30:45');\n\nconsole.log(date.getFullYear());   // 2024\nconsole.log(date.getMonth());      // 2 (Mars, car l'index commence à 0)\nconsole.log(date.getDate());       // 15\nconsole.log(date.getDay());        // 5 (Vendredi, 0 - Dimanche)\nconsole.log(date.getHours());      // 12\nconsole.log(date.getMinutes());    // 30\nconsole.log(date.getSeconds());    // 45
\n

Pour travailler en UTC (temps universel coordonné), utilisez les méthodes avec le préfixe getUTC..., par exemple getUTCHours().

\n\n

2. Formatage et affichage des dates

\n

Dans Node.js, il n'existe pas de formatage intégré pratique des dates dans un format de chaîne arbitraire (par exemple, "15 mars 2024"). Deux solutions s'offrent à vous : la construction manuelle de la chaîne ou l'utilisation de bibliothèques.

\n\n

Formatage manuel (sans bibliothèques externes)

\n

Si vous devez afficher une date dans un format simple, vous pouvez écrire une petite fonction.

\n
function formatDate(date) {\n  const day = String(date.getDate()).padStart(2, '0');\n  const month = String(date.getMonth() + 1).padStart(2, '0');\n  const year = date.getFullYear();\n  return `${day}.${month}.${year}`;\n}\n\nconst today = new Date();\nconsole.log(formatDate(today)); // Exemple : "20.05.2024"
\n\n

Solution moderne : la bibliothèque date-fns

\n

La bibliothèque date-fns est une alternative moderne, modulaire et légère à l'obsolète moment.js. Elle est parfaitement adaptée à Node.js.

\n
// Installation : npm install date-fns\n\nconst { format, addDays, differenceInDays } = require('date-fns');\nconst { fr } = require('date-fns/locale'); // Localisation\n\nconst date = new Date();\n\n// Formatage avec localisation\nconsole.log(format(date, 'dd MMMM yyyy', { locale: fr }));\n// Exemple : "20 mai 2024"\n\n// Ajout de jours\nconst nextWeek = addDays(date, 7);\nconsole.log(format(nextWeek, 'yyyy-MM-dd')); // "2024-05-27"\n\n// Différence en jours\nconst start = new Date(2024, 0, 1);\nconst end = new Date(2024, 11, 31);\nco                

Blogs

Book Recommendations