principiantes - Calcula la diferencia de tiempo entre dos veces de javascript
node js examples (2)
He buscado cómo hacerlo y he encontrado muchos ejemplos con código complicado. Estoy usando esto:
var time1 = new Date();
var time1ms= time1.getTime(time1); //i get the time in ms
entonces hago esto en otra parte del código
var time2 = new Date();
var time2ms= time2.getTime(time2);
y finalmente:
var difference= time2ms-time1ms;
var lapse=new Date(difference);
label.text(lapse.getHours()+'':''+lapse.getMinutes()+'':''+lapse.getSeconds());
Esto funciona genial, excepto por un problema, las horas que me da son siempre +1, así que tengo que agregar al código (time.getHours () - 1) de lo contrario me da una hora más ....
Creo que es una forma más fácil de hacerlo que todos los demás ejemplos ... pero todavía no entiendo por qué necesito agregar ''-1'' para tener el lapso correcto.
¡¡¡Gracias!!!
El problema es tu zona horaria.
Cuando hace una new Date(difference)
, está creando un objeto Date
que representa el momento exprcly difference
milisegundos después del 1 de enero de 1970. Cuando hace lapse.getHours()
su zona horaria se usa en el cálculo. No puede modificar su zona horaria a través de Javascript y no puede modificar este comportamiento. No sin algunos trucos pesados de Javascript.
Pero su difference
no representa una fecha, sino una diferencia de fechas. Treat es como tal y calcula las horas, minutos y segundos como este:
var hours = Math.floor(difference / 36e5),
minutes = Math.floor(difference % 36e5 / 60000),
seconds = Math.floor(difference % 60000 / 1000);
Alternativamente, puede tener en cuenta su zona horaria al crear un lapse
:
var lapse = new Date(difference + new Date().getTimezoneOffset() * 1000);
pero no recomendaría esto: los objetos de Date
son excesivos para sus propósitos.
Tenga en cuenta que en getTimezoneOffset()
devuelve un valor en minutos, por lo que si desea utilizar el lapso, puede corregirlo para la diferencia de zona horaria como esta:
lapse = new Date(difference);
tz_correction_minutes = new Date().getTimezoneOffset() - lapse.getTimezoneOffset();
lapse.setMinutes(offset_date.getMinutes() + tz_correction_minutes);
ahora puedes hacer:
label.text(lapse.getDate()-1+'' days and'' +lapse.getHours()+'':''+lapse.getMinutes()+'':''+lapse.getSeconds());
para imprimir la diferencia de tiempo en forma legible por humanos