286 votes

Obtenir la différence de temps entre deux dates

Je sais que je peux faire n'importe quoi et d'autres choses concernant les dates avec momentjs. Mais malheureusement, j'ai du mal à faire quelque chose qui semble simple : obtenir la différence entre 2 temps.

Exemple :

var now  = "04/09/2013 15:00:00";
var then = "04/09/2013 14:20:30";

//expected result:
"00:39:30"

ce que j'ai essayé :

var now = moment("04/09/2013 15:00:00");
var then = moment("04/09/2013 14:20:30");

console.log(moment(moment.duration(now.diff(then))).format("hh:mm:ss"))
//outputs 10:39:30  

Je ne comprends pas ce qu'est ce "10". Je vis au Brésil, nous sommes donc en utc-0300 si cela est pertinent.

Le résultat de moment.duration(now.diff(then)) est une durée avec les valeurs internes correctes :

 days: 0
 hours: 0
 milliseconds: 0
 minutes: 39
 months: 0
 seconds: 30
 years: 0

Ma question est donc la suivante : comment convertir un momentjs Duration en un intervalle de temps ? Je peux bien sûr utiliser

duration.get("hours") +":"+ duration.get("minutes") +:+ duration.get("seconds")

mais j'ai le sentiment qu'il y a quelque chose de plus élégant qui m'échappe complètement.

mise à jour
En y regardant de plus près, dans l'exemple ci-dessus now est :

Tue Apr 09 2013 15:00:00 GMT-0300 (E. South America Standard Time)…}

y moment(moment.duration(now.diff(then))) est :

Wed Dec 31 1969 22:39:30 GMT-0200 (E. South America Daylight Time)…}

Je ne sais pas pourquoi la deuxième valeur est en heure d'été (-0200)... mais je suis sûr que je n'aime pas les dates :(

mise à jour 2

Eh bien, la valeur est -0200 probablement parce que le 31/12/1969 était une date où l'on utilisait l'heure d'été... c'est donc ça.

0voto

Ajmal Hasan Points 21

C'est très simple avec moment Le code ci-dessous renvoie la différence en heures par rapport à l'heure actuelle :

moment().diff('2021-02-17T14:03:55.811000Z', "h")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X