Je sais que je peux faire n'importe quoi et quelques dates plus envoûtantes avec momentjs. Mais embarrassant, j'ai du mal à essayer de faire quelque chose qui semble simple: faire la différence entre 2 fois.
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 que c'est que "10" là-bas. J'habite au Brésil, nous sommes donc 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
Donc, je suppose que ma question est: comment convertir une durée momentjs en un intervalle de temps? Je peux certainement utiliser
duration.get("hours") +":"+ duration.get("minutes") +:+ duration.get("seconds")
mais je sens qu'il y a quelque chose de plus élégant qui me manque complètement.
mise
à jour en 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)…}
et moment(moment.duration(now.diff(then)))
c'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'heure d'été était utilisée ... c'est donc ça.