Travailler avec les dates en TypeScript : aperçu des bibliothèques
Travailler avec les dates est l'une des tâches les plus courantes en développement web. En TypeScript (et JavaScript), l'objet natif Date a des capacités limitées et une API peu pratique. Heureusement, il existe de nombreuses bibliothèques qui simplifient le formatage, l'analyse, la comparaison et la manipulation des dates. Dans cet article, nous examinerons quatre bibliothèques populaires : date-fns, Day.js, Luxon et Moment.js, et montrerons des exemples de leur utilisation en TypeScript.
1. date-fns — modulaire et légère
date-fns est une bibliothèque moderne construite sur le principe de modularité. Vous importez uniquement les fonctions dont vous avez besoin, ce qui permet de garder la taille du bundle minimale. date-fns prend parfaitement en charge TypeScript dès le départ.
Installation :
npm install date-fns# ouyarn add date-fnsExemples d'utilisation :
import { format, addDays, differenceInDays, parseISO } from 'date-fns';
// Formatageconst today = new Date();console.log(format(today, 'yyyy-MM-dd')); // 2025-03-15
// Ajout de joursconst future = addDays(today, 10);console.log(format(future, 'dd.MM.yyyy')); // 25.03.2025
// Différence entre datesconst start = parseISO('2025-01-01');const end = parseISO('2025-03-15');console.log(differenceInDays(end, start)); // 73
// Vérification du week-endimport { isWeekend } from 'date-fns';console.log(isWeekend(new Date(2025, 2, 15))); // true (samedi)2. Day.js — une alternative légère à Moment.js
Day.js est une bibliothèque minimaliste (seulement 2 Ko) avec une API très similaire à Moment.js. Elle est idéale si vous souhaitez migrer depuis Moment tout en réduisant la taille du bundle. Day.js prend en charge TypeScript via les types.
Installation :
npm install dayjs# ouyarn add dayjsExemples d'utilisation :
import dayjs from 'dayjs';import relativeTime from 'dayjs/plugin/relativeTime';import utc from 'dayjs/plugin/utc';
dayjs.extend(relativeTime);dayjs.extend(utc);
// Création et formatageconst now = dayjs();console.log(now.format('DD/MM/YYYY HH:mm')); // 15/03/2025 14:30
// Temps relatifconsole.log(dayjs('2025-03-10').fromNow()); // il y a 5 jours
// Travail avec UTCconst utcDate = dayjs.utc('2025-03-15T12:00:00Z');console.log(utcDate.local().format('HH:mm')); // heure locale
// Manipulationsconst nextMonth = dayjs().add(1, 'month');console.log(nextMonth.format('MMMM YYYY')); // avril 20253. Luxon — puissant et moderne
Luxon est le successeur de Moment.js, développé par la même équipe. Il utilise l'objet natif DateTime, prend en charge les fuseaux horaires, les intervalles et les durées. Luxon est écrit en TypeScript et possède une excellente typage.
Installation :
npm install luxon# ouyarn add luxonExemples d'utilisation :
import { DateTime, Interval, Duration } from 'luxon';
// Création et formatageconst dt = DateTime.now();console.log(dt.toFormat('yyyy LLL dd')); // 2025 mar. 15
// Fuseaux horairesconst ny = DateTime.now().setZone('America/New_York');console.log(ny.toLocaleString(DateTime.DATETIME_FULL)); // 15 mars 2025 à 09:30 EDT
// Intervallesconst start = DateTime.fromISO('2025-01-01');const end = DateTime.fromISO('2025-03-15');const interval = Interval.fromDateTimes(start, end);console.log(interval.length('days')); // 73
// Duréesconst dur = Duration.fromObject({ hours: 5, minutes: 30 });console.log(dur.toHuman()); // 5 heures, 30 minutes
// Analyse Aussi dans la bibliothèque
Autorisation et authentification en PHP : Guide complet avec exemples
Cryptographie en TypeScript : chiffrement et hachage en pratique
Travailler avec les archives ZIP en TypeScript : guide complet sur JSZip et adm-zip
Travailler avec YAML en TypeScript : parsing, génération et validation de données