2017-09-25 1 views
0

Je suis en train de faire la différence de date à l'aide actuellement, mais il montre jours figure incorrectedifférence de date moment ne fonctionne pas

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(now - before) 
 
    .format('D[ day(s)] H[ hour(s)] m[ minute(s)] s[ second(s) ago.]') 
 
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

+0

'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. –

Répondre

1

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>