Sé que puedo hacer cualquier cosa y algunas fechas más envolventes con momentjs. Pero vergonzosamente, me cuesta mucho intentar hacer algo que parece simple: obtener la diferencia entre 2 veces.
Ejemplo:
var now = "04/09/2013 15:00:00";
var then = "04/09/2013 14:20:30";
//expected result:
"00:39:30"
lo que probé:
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
No entiendo qué es ese "10" allí. Vivo en Brasil, así que somos utc-0300 si eso es relevante.
El resultado de moment.duration(now.diff(then))
es una duración con los valores internos correctos:
days: 0
hours: 0
milliseconds: 0
minutes: 39
months: 0
seconds: 30
years: 0
Entonces, supongo que mi pregunta es: ¿cómo convertir una duración momentjs en un intervalo de tiempo? Estoy seguro de que puedo usar
duration.get("hours") +":"+ duration.get("minutes") +:+ duration.get("seconds")
pero siento que hay algo más elegante que me estoy perdiendo por completo.
actualización
mirando más de cerca, en el ejemplo anterior now
es:
Tue Apr 09 2013 15:00:00 GMT-0300 (E. South America Standard Time)…}
y moment(moment.duration(now.diff(then)))
es:
Wed Dec 31 1969 22:39:30 GMT-0200 (E. South America Daylight Time)…}
No estoy seguro de por qué el segundo valor está en el horario de verano (-0200) ... pero estoy seguro de que no me gustan las fechas :(
actualización 2
bueno, el valor es -0200 probablemente porque el 31/12/1969 era una fecha en la que se usaba el horario de verano ... así que eso es todo.