Travailler avec les dates et l'heure en JavaScript (Node.js) : des bases aux techniques avancées
Travailler avec les dates et l'heure est l'une des tâches les plus courantes en développement web. Qu'il s'agisse de journalisation d'événements, de traitement de données utilisateur, de planification de tâches ou d'affichage d'horodatages, savoir gérer les dates en JavaScript est indispensable. Dans cet article, nous allons aborder tous les aspects clés du travail avec les dates dans l'environnement Node.js : de la création et du formatage aux manipulations complexes avec les fuseaux horaires et à l'utilisation de bibliothèques populaires.
Les bases : l'objet Date en JavaScript
L'objet natif Date est le fondement du travail avec les dates. Il stocke le nombre de millisecondes écoulées depuis le 1er janvier 1970 (l'époque Unix).
Création d'une date
Il existe plusieurs façons de créer une instance de Date :
// Date et heure actuellesconst now = new Date();console.log(now); // 2025-03-15T10:30:00.000Z
// À partir de millisecondes (timestamp Unix)const fromTimestamp = new Date(1742025000000);console.log(fromTimestamp); // 2025-03-15T10:30:00.000Z
// À partir d'une chaîne (ISO 8601)const fromString = new Date('2025-03-15T10:30:00');console.log(fromString);
// À partir de composants (année, mois, jour, heure, minute, seconde, milliseconde)const fromComponents = new Date(2025, 2, 15, 10, 30, 0, 0); // Mois : 0-11console.log(fromComponents); // March 15, 2025 10:30:00Important : les mois en JavaScript sont indexés à partir de 0 (janvier = 0, décembre = 11).
Obtention des composants d'une date
Méthodes pour extraire les parties individuelles d'une date :
const date = new Date('2025-03-15T10:30:45.123Z');
console.log(date.getFullYear()); // 2025console.log(date.getMonth()); // 2 (mars)console.log(date.getDate()); // 15console.log(date.getDay()); // 6 (samedi, 0 - dimanche)console.log(date.getHours()); // 10console.log(date.getMinutes()); // 30console.log(date.getSeconds()); // 45console.log(date.getMilliseconds());// 123console.log(date.getTime()); // millisecondes depuis l'époqueFormatage des dates dans Node.js
L'objet Date standard offre des capacités de formatage limitées. Pour un affichage lisible, utilisez toLocaleDateString() et toLocaleString().
const date = new Date('2025-03-15T10:30:00');
// Formatage localiséconsole.log(date.toLocaleDateString('fr-FR')); // 15/03/2025console.log(date.toLocaleTimeString('fr-FR')); // 10:30:00console.log(date.toLocaleString('fr-FR')); // 15/03/2025, 10:30:00
// Avec optionsconst options = { year: 'numeric', month: 'long', day: 'numeric', weekday: 'long', hour: '2-digit', minute: '2-digit'};console.log(date.toLocaleString('fr-FR', options)); // samedi 15 mars 2025, 10:30Formatage personnalisé
Pour un contrôle total, écrivez une fonction simple :
function formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') { const map = { YYYY: date.getFullYear(), MM: String(date.getMonth() + 1).padStart(2, '0'), DD: String(date.getDate()).padStart(2, '0'), HH: String(date.getHours()).padStart(2, '0'), mm: String(date.getMinutes()).padStart(2, '0'), ss: String(date.getSeconds()).padStart(2, '0'), }; return format.replace(/YYYY|MM|DD|HH|mm|ss/g, match => map[match]);}
console.log(formatDate(new Date(), 'DD.MM.YYYY')); // 15.03.2025console.log(formatDate(new Date(), 'HH:mm:ss')); // 10:30:00Manipulations des dates : ajout, soustraction, comparaison
Vous pouvez modifier les dates directement via les méthodes set* ou en travaillant avec les millisecondes.
Ajout et soustraction de temps
const date = new Date('2025-03-15T10:30:00');
// Ajouter 5 joursdate.setDate(date.getDate() + 5);console.log(date); // 2025-03-20T10:30:00
// Ajouter
```