Utilizo el siguiente código para calcular la diferencia entre dos números.
function differenceCalculation(num1, num2) { if (num1 > num2) { return num1 - num2 } else { return num2 - num1 } }En documento.listo
var difference = differenceCalculation(visitorTime, firstOption); console.log({difference});Esto da, por ejemplo, los siguientes valores en la consola:
visitorTime = 1831 firstOption = 1900 difference = 69 Pero dado que esto debería devolver la diferencia en el tiempo, necesito hacer el cálculo con 60 como límite máximo en lugar de los 100 predeterminados.
Una solución simple sería menos 40 de la diferencia, pero ¿es esta una buena solución?
var difference = ( differenceCalculation(visitorTime, firstOption) - 40 );Parece que desea calcular en tiempo "militar" (como en "a las mil novecientos quince").
Entonces, eso implica convertir ambos indicadores de tiempo a horas y minutos, luego hacer la resta de cada uno (con acarreo si es necesario) y luego volver a convertirlo a tiempo militar:
const toHourMinute = military => [Math.floor(military / 100), military % 100]; const toMilitary = (hour, minute) => hour*100 + minute; function timeDifference(a, b) { if (a > b) return timeDifference(b, a); let [h1, m1] = toHourMinute(a); let [h2, m2] = toHourMinute(b); if (m2 < m1) { // Deal with a carry over m2 += 60; h2--; } return toMilitary(h2 - h1, m2 - m1); } var visitorTime = 1831 var firstOption = 1900 var difference = timeDifference(visitorTime, firstOption); console.log({difference});Poco después de enviar y responder a los comentarios, descubrí una forma que funcionó para mí. Sin embargo, tenga en cuenta que la pregunta vinculada tiene mejores respuestas. Por eso voté para cerrar esta pregunta.
De todos modos, hice estos cambios en mi código y ahora obtengo el resultado requerido.
var difference = differenceCalculation(visitorTime, firstOption); if ( difference >= 30 ) { var difference = ( differenceCalculation(visitorTime, firstOption) - 40 ); } console.log({difference});En la consola:
visitorTime = 1831 firstOption = 1900 difference = 29Y si los 2 primeros valores son diferentes:
visitorTime = 1901 firstOption = 2000 difference = 59