tiempo reloj hacer fechas diferencia contador como calcular javascript math time numbers var

reloj - fechas en javascript



Cómo calcular la diferencia de tiempo entre dos veces en un reloj de 24 horas (3)

Las soluciones proporcionadas no son responsables del límite del día de manera efectiva. Y todo esto supone que la diferencia es menos de 24 horas. Lo que significa que tenemos un límite superior en la diferencia entre el inicio y el final de 23 horas y 59 minutos; de lo contrario, el resultado nos confundirá. Pero recuerde que, como se describe en un caso de uso real, un evento comienza a las 11 p.m. y termina a la 1 a.m. (de 23:00 a 1:00 p.m.) y la diferencia es de 2 horas y NO de 22 horas.

function calculateTime(e) { var startTime = $(''#start'').val(); var endTime = $(''#end'').val(); var startTimeArray = startTime.split(":"); var startInputHrs = parseInt(startTimeArray[0]); var startInputMins = parseInt(startTimeArray[1]); var endTimeArray = endTime.split(":"); var endInputHrs = parseInt(endTimeArray[0]); var endInputMins = parseInt(endTimeArray[1]); var startMin = startInputHrs*60 + startInputMins; var endMin = endInputHrs*60 + endInputMins; var result; if (endMin < startMin) { var minutesPerDay = 24*60; result = minutesPerDay - startMin; // Minutes till midnight result += endMin; // Minutes in the next day } else { result = endMin - startMin; } var minutesElapsed = result % 60; var hoursElapsed = (result - minutesElapsed) / 60; alert ( "Elapsed Time : " + hoursElapsed + ":" + (minutesElapsed < 10 ? ''0''+minutesElapsed : minutesElapsed) ) ; }

Y no revisé, pero creo que podrías hacer esto, pero no lo estoy verificando:

var result = endMin - startMin; if (result < 0 ) result = (24*60) + result;

Tengo un problema con algún código que he estado produciendo en JavaScript. Quiero calcular la diferencia entre dos veces en un reloj de 24 horas. Los datos provienen de dos campos de tiempo de entrada:

<input type="time" id="start" /> <input type="time" id="end" />

Debido a esto, los tiempos vienen en una cadena 00:00, lo que no ayuda a calcular los números.

La forma en que lo resolví fue menos el comienzo desde el final. Esto funciona perfectamente si el tiempo de finalización es mayor, sin embargo, si la hora de finalización es pasada 11:00 (00:00), termino con un número negativo. He intentado agregar 24 al resultado si el final es más bajo que el inicio, pero todavía obtengo un número negativo. Esto puede parecer una pregunta tonta, pero nunca fui tan bueno en matemáticas.

var numHours; if(time_end < time_start){ numHours = parseInt(t_e.substring(0,2)) - parseInt(t_s.substring(0,2)) + 24; }else{ numHours = parseInt(t_e.substring(0,2)) - parseInt(t_s.substring(0,2)); }

Probablemente haya (definitivamente) una mejor manera de hacerlo, pero ¿cómo puedo hacer que esto funcione? También podría calcular los minutos para obtener una diferencia de tiempo más precisa.


Soy un principiante, y algunos genios probablemente darán una respuesta en 2 líneas similares :), pero aquí está ... esto funciona. entrada es una cadena en forma de "1:20 p.m. -2:30 a.m."

function CountingMinutesI(str) { split = str.split(''-'') startTime = split[0] endTime = split[1] // for end time if (endTime === ''12:00am'') { endInMinutes = 0} else if (endTime.charAt(endTime.length-2) === ''a'') { if (endTime.substr(0, 2) === ''12'') { endInMinutes = parseInt(endTime.split('':'')[1].replace(/[a-z]/gi, '''')) } else { endHours = endTime.split('':'')[0] endMins = endTime.split('':'')[1].replace(/[a-z]/gi, '''') endInMinutes = (parseInt(endHours)*60) + parseInt(endMins) } } else if (endTime === ''12:00pm'') {endInMinutes = 720} else { endHours = endTime.split('':'')[0] endMins = endTime.split('':'')[1].replace(/[a-z]/gi, '''') endInMinutes = (parseInt(endHours)*60 + 720) + parseInt(endMins) } // for start time if (startTime === ''12:00am'') { startInMinutes = 0} else if (startTime.charAt(startTime.length-2) === ''a'') { if (startTime.substr(0, 2) === ''12'') { startInMinutes = parseInt(startTime.split('':'')[1].replace(/[a-z]/gi, '''')) } else { startHours = startTime.split('':'')[0] startMins = startTime.split('':'')[1].replace(/[a-z]/gi, '''') startInMinutes = (parseInt(startHours)*60) + parseInt(startMins) } } else if (startTime.substr(0,2) === ''12'') {startInMinutes = 720 + parseInt(startTime.split('':'')[1].replace(/[a-z]/gi, ''''))} else { startHours = startTime.split('':'')[0] startMins = startTime.split('':'')[1].replace(/[a-z]/gi, '''') startInMinutes = (parseInt(startHours)*60 + 720) + parseInt(startMins) } if (endInMinutes > startInMinutes) {output = endInMinutes - startInMinutes} else {output = 1440 - (startInMinutes - endInMinutes)} return output }


Una solución simple que podría funcionar mejor para este caso de uso limitado es convertir ambos tiempos en minutos totales desde el comienzo del día, y luego restar.

Pseudocódigo:

startMin = startInputHrs * 60 + startInputMin endMin = endInputHrs * 60 + endInputMin timeDifference = endMin - startMin

Depende de usted cómo quiere manejar un resultado negativo. Quizás le dé al usuario un mensaje de error y le diga que la hora de inicio debe ser anterior a la hora de finalización.