Démonstration de l'utilisation de Moment.js

Moment.js (momentjs.com) est une bibliothèque JavaScript qui permet d'analyser des dates et des heures au format texte, de les manipuler, d'effectuer des opérations mathématiques et d'afficher les résultats. Cette bibliothèque est bien plus intuitive et exploitable que l'objet Date natif du JavaScript.

Installation

La bibliothèque Moment.js ne nécessite qu'un seul fichier (moment-with-locales.min.js) que vous pouvez télécharger sur le site officiel momentjs.com.

Vous pouvez aussi installer Moment.js avec npm :
npm install moment --save

Intégrez le script sur votre page :
<script src="moment-with-locales.min.js"></script>

Les dates au format international

La bibliothèque minimale moment.min.js ne propose que l'affichage américain des dates et heures.
Si vous voulez n'afficher les dates que dans le format US, utilisez plutôt le fichier moment.min.js qui sera nettement plus léger :
<script src="moment.min.js"></script>

Afficher des dates

L'appel à moment() retourne un objet de type Moment avec la date et l'heure du jour.

Pour afficher l'objet Moment, il suffit d'appeler la méthode format(formatage) avec en paramètre une chaîne correspondant au format souhaité :

Afficher les dates au format local

Par défaut, le format d'affichage local est "en" :

En forçant globalement le format local à "fr" avec :
moment.locale("fr")
l'affichage se fait bien en français.

Parser (analyser) des dates

Naturellement, on peut créer des dates précises, avec le format que l'on souhaite.

moment(valeur, format) peut recevoir deux paramètres qui sont la valeur de la date et son format.

La dernière ligne construit une date invalide. Utilisez la méthode isValid() pour contrôler que la saisie est correcte :

Manipuler les dates

L'interêt de Moment.js est la facilité de manipulation des dates.
On peut ajouter ou enlever des durées avec la syntaxe :
add(valeur, type)
subtract(valeur, type)

La méthode fromNow() retourne le temps écoulé par rapport à maintenant de manière lisible et arrondie intelligemment :

La méthode calendar() retourne la date par rapport à aujourd'hui :

La méthode diff() retourne la différence en millisecondes entre 2 dates :

La méthode diff() peut aussi retourner la différence en une autre unité entre 2 dates :

Manipuler des durées

La méthode moment.duration(nbMS) crée une durée de nbMS millisecondes.

La méthode moment.duration(valeur, type) crée une durée de valeur exprimée en type.

Notez qu'une duration peut être négative.

La méthode humanize() convertit la durée en texte compréhensible et arrondi intelligemment :

D'autres fonctionnalités

La méthode daysInMonth() donne le nombre de jours dans le mois de la date :

Les méthodes isBefore() et isAfter() comparent l'antériorité de 2 dates :

Convertir un objet Moment en Date et inversement

De nombreux scripts nécessitent un objet de type Date natif. Pour convertir un Moment en Date, utilisez la méthode toDate() :

Pour convertir une Date en Moment, passez la simplement en paramètre :

Pour conclure

Cette page n'aborde qu'une petite partie du potentiel de Moment.js.