Travail avec les dates en JavaScript (Node.js) : bibliothèques populaires

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

Aperçu des bibliothèques pour travailler avec les dates en JavaScript (Node.js)



Travailler avec les dates est l'une des tâches les plus courantes et en même temps les plus complexes du développement web. En JavaScript, l'objet natif Date présente plusieurs inconvénients : mutabilité, capacités limitées de formatage et d'analyse, problèmes de fuseaux horaires. Heureusement, l'écosystème Node.js propose plusieurs bibliothèques puissantes qui simplifient considérablement les manipulations de dates. Dans cet article, nous examinerons les quatre plus populaires : Moment.js, Day.js, date-fns et Luxon.



1. Moment.js — le classique du genre



Pendant longtemps, Moment.js a été la norme de facto pour travailler avec les dates. Il offre une API riche pour l'analyse, la validation, la manipulation et l'affichage des dates. Cependant, la bibliothèque est considérée comme obsolète (mode maintenance) et n'est pas recommandée pour les nouveaux projets en raison de sa taille importante (environ 300 Ko) et de problèmes de performance.



Installation :

npm install moment


Exemples d'utilisation :

const moment = require('moment');

// Date actuelleconst now = moment();console.log(now.format('YYYY-MM-DD HH:mm:ss')); // 2025-03-15 14:30:00

// Analyse d'une chaîneconst date = moment('2025-12-31', 'YYYY-MM-DD');console.log(date.add(1, 'day').format('DD.MM.YYYY')); // 01.01.2026

// Différence entre datesconst start = moment('2025-01-01');const end = moment('2025-03-15');console.log('Jours écoulés :', end.diff(start, 'days')); // 73


2. Day.js — l'alternative légère



Day.js est une bibliothèque minimaliste (seulement 2 Ko) dont l'API est entièrement compatible avec Moment.js. Elle est idéale pour les projets où la taille du bundle est importante. Day.js prend en charge les plugins pour étendre ses fonctionnalités (fuseaux horaires, temps relatif, etc.).



Installation :

npm install dayjs


Exemples d'utilisation :

const dayjs = require('dayjs');const relativeTime = require('dayjs/plugin/relativeTime');const utc = require('dayjs/plugin/utc');

dayjs.extend(relativeTime);dayjs.extend(utc);

// Date actuelleconsole.log(dayjs().format('DD.MM.YYYY')); // 15.03.2025

// Temps relatifconsole.log(dayjs('2025-03-10').fromNow()); // il y a 5 jours

// Travail avec UTCconsole.log(dayjs.utc().format()); // 2025-03-15T11:30:00Z


3. date-fns — l'approche fonctionnelle



date-fns est une bibliothèque moderne construite sur les principes de la programmation fonctionnelle. Contrairement à Moment.js, elle n'utilise pas d'objets mutables et prend en charge l'arborescence (tree-shaking), ce qui permet d'importer uniquement les fonctions nécessaires et de réduire la taille du bundle.



Installation :

npm install date-fns


Exemples d'utilisation :

const { format, addDays, differenceInDays, parseISO } = require('date-fns');const { ru } = require('date-fns/locale');

// Formatage avec localeconsole.log(format(new Date(), 'd MMMM yyyy', { locale: ru })); // 15 mars 2025

// Manipulationsconst future = addDays(new Date(), 10);console.log(format(future, 'yyyy-MM-dd')); // 2025-03-25

// Différenceconst d1 = parseISO('2025-01-01');const d2 = new Date();console.log('Jours depuis le Nouvel An :', differenceInDays(d2, d1)); // 73


4. Luxon — le standard moderne



Luxon est une bibliothèque créée par les mêmes développeurs que Moment.js, mais sans ses inconvénients. Elle utilise les objets natifs DateTime, Duration et Interval, prend en charge les fuseaux horaires et l'internationalisation "prêts à l'emploi". Luxon est idéale pour les scénarios complexes impliquant des fuseaux horaires.



Installation :

npm install luxon                    

Recommendations