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.