Moment.js / Day.js pour JavaScript (Node.js) : guide complet avec exemples

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

Qu'est-ce que cette bibliothèque et pourquoi en a-t-on besoin

\n\n

Moment.js et Day.js sont deux bibliothèques puissantes pour JavaScript, conçues pour travailler avec les dates et l'heure. Elles résolvent un problème fondamental : l'objet natif Date en JavaScript est extrêmement peu pratique pour les tâches quotidiennes. Il ne prend pas en charge le formatage, les calculs complexes avec les dates, l'analyse de chaînes dans différents formats et la gestion des fuseaux horaires sans écrire des dizaines de lignes de code.

\n\n

Moment.js a longtemps été la norme de facto, mais est maintenant considéré comme "legacy" — son développement est gelé et il n'est pas recommandé pour les nouveaux projets en raison de sa taille importante (environ 300 Ko). Il a été remplacé par Day.js — une bibliothèque légère (seulement 2 Ko) et rapide avec une API pratiquement identique. Day.js est entièrement compatible avec Moment.js pour la plupart des opérations de base, ce qui permet une migration facile.

\n\n

Les deux bibliothèques offrent :

\n
    \n
  • L'analyse de dates à partir de chaînes de n'importe quel format
  • \n
  • Le formatage des dates en chaînes lisibles
  • \n
  • Les manipulations (ajout/soustraction de jours, mois, années)
  • \n
  • La comparaison de dates (avant, après, entre)
  • \n
  • La gestion des fuseaux horaires (via des plugins)
  • \n
  • La localisation (prise en charge de différentes langues et formats régionaux)
  • \n
\n\n

Dans cet article, nous allons examiner Day.js comme alternative moderne, mais tous les exemples fonctionneront également avec Moment.js avec des modifications minimes.

\n\n

Installation

\n\n

L'installation pour Node.js se fait via npm ou yarn. Pour le navigateur, vous pouvez utiliser un CDN.

\n\n

Installation de Day.js

\n
# Via npm\nnpm install dayjs\n\n# Via yarn\nyarn add dayjs
\n\n

Installation de Moment.js

\n
npm install moment\n\n# ou\nyarn add moment
\n\n

Importation dans le projet

\n
// Day.js\nconst dayjs = require('dayjs');\n\n// Moment.js\nconst moment = require('moment');
\n\n

Démarrage rapide avec un exemple de code

\n\n

Après l'installation, vous pouvez immédiatement commencer à travailler avec les dates. Voici un exemple minimal qui démontre les fonctionnalités de base :

\n\n
const dayjs = require('dayjs');\n\n// Date et heure actuelles\nconst now = dayjs();\nconsole.log('Maintenant :', now.format('DD.MM.YYYY HH:mm:ss'));\n\n// Analyse d'une chaîne\nconst date = dayjs('2024-03-15');\nconsole.log('Analyse :', date.format('DD.MM.YYYY'));\n\n// Manipulations\nconst nextWeek = dayjs().add(7, 'day');\nconsole.log('Dans une semaine :', nextWeek.format('DD.MM.YYYY'));\n\n// Différence entre les dates\nconst diff = nextWeek.diff(now, 'day');\nconsole.log('Différence en jours :', diff);\n\n// Comparaison\nconsole.log('Aujourd\'hui est plus tôt ?', now.isBefore(nextWeek)); // true
\n\n

Méthodes/fonctions principales

\n\n

1. dayjs() — création d'un objet date

\n

Ce qu'il fait : Crée un objet Day.js représentant un moment précis dans le temps. Sans arguments, il retourne la date et l'heure actuelles.

\n

Paramètres :

\n
    \n
  • date (facultatif) — une chaîne, un nombre (timestamp), un objet Date ou un autre objet Day.js
  • \n
  • format (facultatif) — une chaîne de format pour l'analyse, si date est une chaîne
  • \n
\n

Exemple de code fonctionnel :

\n
// Date actuelle\nconst now = dayjs();\n\n// À partir d'une chaîne\nconst fromString = dayjs('2024-12-31');\n\n// À partir d'un timestamp (millisecondes)\nconst fromTimestamp = dayjs(1704067200000);\n\n// À partir d'un objet Date\nconst fromDate = dayjs(new Date(2024, 0, 1)); // 1er janvier 2024\n\n// Avec indication du format\nconst customFormat = dayjs('31.12.2024', 'DD.MM.YYYY');\n\nconsole.log(now.format()); // 2024-03-15T10:30:00+03:00\nconsole.log(customFormat.format('YYYY-MM-DD')); // 2024-12-31
\n\n

2. format() — formatage de la date

\n

Ce qu'il fait : Convertit l'objet date en une chaîne selon un format donné

Recommendations