Utilisez instant diff
pour calculer la différence entre deux objets moment, au lieu de -
, vous aurez donc now.diff(before)
au lieu de moment(now - before)
.
Ensuite, vous pouvez utiliser moment.duration(Number);
pour créer un duration:
Moment.js a aussi des objets de durée. Lorsqu'un moment est défini comme un seul point dans le temps, les durées sont définies comme une durée.
Vous pouvez utiliser moment-duration-format plug-in pour obtenir la valeur de la durée sous forme de: 'D[ day(s)] H[ hour(s)] m[ minute(s)] s[ second(s) ago.]'
. Voir docs méthode format
pour plus d'informations.
Notez que l'utilisation instant durée format:
jetons de premier plan sont automatiquement coupé quand ils ont aucune valeur.
vous pouvez utiliser l'option { trim: false }
pour arrêter ce comportement.
Voici un échantillon vivant:
var before = moment('25-Sep-2017 13:44','DD-MMM-YYYY HH:mm');
var now = moment('25-Sep-2017 13:46','DD-MMM-YYYY HH:mm');
console.log(
moment.duration(now.diff(before))
.format('D[ day(s)] H[ hour(s)] m[ minute(s)] s[ second(s) ago.]')
);
// With trim: false
console.log(
moment.duration(now.diff(before))
.format('D[ day(s)] H[ hour(s)] m[ minute(s)] s[ second(s) ago.]', { trim: false })
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>
'instant (maintenant) .diff (avant, 'minutes')' donnera 2, donc aucune erreur avec celui-là, il pourrait être un problème de fuseau horaire dans le navigateur, je vais enquêter. –