Travailler avec les dates en JavaScript (Node.js) : les meilleures bibliothèques

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

Travailler avec les dates en JavaScript (Node.js) : aperçu des bibliothèques populaires



Travailler avec les dates et l'heure est l'une des tâches courantes dans le développement web. L'objet natif Date en JavaScript a des fonctionnalités limitées et une API peu pratique. Heureusement, il existe pour Node.js de nombreuses bibliothèques qui simplifient l'analyse, le formatage, les manipulations et la comparaison des dates. Dans cet article, nous examinerons les quatre bibliothèques les plus populaires : Moment.js, Day.js, date-fns et Luxon.



1. Moment.js (légendaire mais obsolète)



Moment.js a longtemps été la norme de facto pour travailler avec les dates. Elle offre une API riche pour l'analyse, la validation, les manipulations et le formatage. Cependant, le projet est officiellement reconnu comme obsolète (legacy) — les développeurs recommandent d'utiliser des alternatives modernes. Principaux inconvénients : taille importante (~300 KB), méthodes mutables (modifient l'objet d'origine) et problèmes avec Tree Shaking.



// Installation : npm install momentconst moment = require('moment');

// Analyse et formatageconst now = moment();console.log(now.format('YYYY-MM-DD HH:mm:ss')); // 2024-01-15 14:30:00

// Manipulationsconst future = moment().add(7, 'days').startOf('week');console.log(future.format('dddd, MMMM Do YYYY')); // Monday, January 22nd 2024

// Différence entre datesconst a = moment('2024-01-01');const b = moment('2024-01-10');console.log(b.diff(a, 'days')); // 9


2. Day.js (successeur léger)



Day.js est une bibliothèque moderne avec la même API que Moment.js, mais d'une taille de seulement 2 KB. Elle est entièrement immuable (ne modifie pas les objets d'origine), prend en charge les plugins et fonctionne parfaitement avec Tree Shaking. Idéale pour les projets où la taille du bundle est importante.



// Installation : npm install dayjsconst dayjs = require('dayjs');const relativeTime = require('dayjs/plugin/relativeTime');dayjs.extend(relativeTime);

const now = dayjs();console.log(now.format('DD.MM.YYYY')); // 15.01.2024

// Travail avec les fuseaux horaires (nécessite le plugin utc)const utc = require('dayjs/plugin/utc');dayjs.extend(utc);const date = dayjs.utc('2024-01-15T12:00:00Z').local();console.log(date.format('HH:mm')); // 15:00 (dépend du fuseau horaire)

// Temps relatifconsole.log(dayjs('2023-12-25').fromNow()); // 3 weeks ago


3. date-fns (approche fonctionnelle)



date-fns est une bibliothèque construite sur les principes de la programmation fonctionnelle. Au lieu d'un objet unique, elle fournit de nombreuses fonctions pures. Chaque fonction est importée séparément, ce qui permet de n'inclure que le code nécessaire. C'est la bibliothèque la plus performante et la plus modulaire parmi celles listées.



// Installation : npm install date-fnsconst { format, addDays, differenceInDays, startOfWeek } = require('date-fns');const { ru } = require('date-fns/locale');

const now = new Date();

// Formatage avec localisationconsole.log(format(now, 'PPPP', { locale: ru })); // понедельник, 15 января 2024 г.

// Manipulations (fonctions pures)const nextWeek = addDays(now, 7);console.log(format(nextWeek, 'yyyy-MM-dd')); // 2024-01-22

// Différenceconst start = new Date(2024, 0, 1);console.log(differenceInDays(now, start)); // 14

// Début de semaineconst monday = startOfWeek(now, { weekStartsOn: 1 });console.log(format(monday, 'dd.MM.yyyy')); // 15.01.2024


4. Luxon (standard moderne des créateurs de Moment.js)



Luxon est une bibliothèque des mêmes développeurs que Moment.js, mais sans ses défauts. Elle utilise les objets natifs DateTime, Duration et Interval, est entièrement immuable, prend en charge les fuseaux horaires et l'internationalisation "prêts à l'emploi". Recommandée pour les nouveaux projets.



// Installation : npm install luxonconst { DateTime, Duration, Inte                    

Recommendations