Estoy tratando de obtener la diferencia entre 2 marcas de tiempo.
Tengo una matriz con marcas de tiempo guardadas y cuando las recorro, trato de obtener la diferencia entre entonces y ahora, pero se registra como "sent:", "Hours - 0 - Minutes 0 - Seconds - 0" y me preguntaba si alguien supiera porque?
let messages = [{ username: "test one", message: "testing one", time: new Date() }, { username: "test two", message: "testing two", time: new Date() }]; const duration = (difference) => { let secondsInMiliseconds = 1000, minutesInMiliseconds = 60 * secondsInMiliseconds, hoursInMiliseconds = 60 * minutesInMiliseconds; let differenceInHours = difference / hoursInMiliseconds, differenceInMinutes = differenceInHours % 1 * 60, differenceInSeconds = differenceInMinutes % 1 * 60; return { "hours": Math.floor(differenceInHours), "minutes": Math.floor(differenceInMinutes), "seconds": Math.floor(differenceInSeconds) } }; console.log("Wait One minute befor logging / loop"); setTimeout(() => { for (let i = 0; i < messages.length; i++) { let now = new Date(); let time = duration(now - messages[i].time); let sent = `Hours - ${time.hours} - Minutes ${time.hours} - Seconds - ${time.hours}`; console.log("sent:", sent); } }, 30000);Lo siento si mi inglés no es bueno.
Como se mencionó en los comentarios, parece haber cierta confusión sobre la prioridad del operador de módulo y luego está el error sobre el uso de time.hour tres veces. Aquí hay una versión fija, simplificada y abreviada. Dado que las variables declaradas en la duration solo se usan una vez, y dado que es una función simple, me tomé la libertad de alinear el cálculo.
let messages = [{ username: "test one", message: "testing one", time: new Date() }, { username: "test two", message: "testing two", time: new Date() }]; const duration = (difference) => { return { hours: Math.floor(difference / (1000 * 60 * 60)), minutes: Math.floor((difference / (1000 * 60)) % 60), seconds: Math.floor((difference / 1000) % 60) } }; console.log("Wait One minute befor logging / loop"); setTimeout(() => { for (let i = 0; i < messages.length; i++) { let now = new Date(); let time = duration(now - messages[i].time); let sent = `Hours - ${time.hours} - Minutes ${time.minutes} - Seconds - ${time.seconds}`; console.log("sent:", sent); } }, 30000);