Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

263
Vistas
Calcular es tiempos entre tiempos

Necesito crear una función que exceptúe 2 matrices de parámetros de tiempos y devuelva verdadero o falso si la segunda matriz está entre una de las veces de la primera matriz:

 function calculateIsBetween(workTimes, breakTimes) { // ... ... ... }

Ejemplo 1:

 calculateIsBetween( [ {entryTime: '12:00', exitTime: '13:00'}, {entryTime: '14:00', exitTime: '15:00'} ], [ {startBreak: '12:05', endBreak: '12:10'}, {startBreak: '12:25', endBreak: '12:30'} ] )

La función devuelve verdadero porque se rompe entre al menos uno de los tiempos de entrada y salida.

ejemplo 2:

 calculateIsBetween( [ {entryTime: '12:00', exitTime: '13:00'}, {entryTime: '14:00', exitTime: '15:00'} ], [ {startBreak: '16:05', endBreak: '18:10'}, {startBreak: '12:25', endBreak: '12:30'} ] )

La función devuelve falso porque no se rompe entre al menos uno de los tiempos de entrada y salida.

La función ps también debe tener cuidado con los horarios nocturnos.

Intenté algo con moment pero no funciona bien.

Que me puedas ayudar

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Intentaré desglosar mi código, espero que esté escrito lo suficientemente bien como para que se explique por sí mismo. Primero necesito crear una matriz de rangos permitidos para los descansos. Cada elemento de la matriz tendrá un máximo para las horas y un máximo para los minutos. Uso .map para crear la matriz de valores máximos y mínimos a partir del argumento de tiempos de trabajo pasado.

Mi siguiente línea devuelve el retorno booleano de un método de prueba breakTimes .every La prueba que debe pasar cada elemento de la matriz es una función que primero toma los valores inicial y final de la hora y el minuto. Esta prueba devuelve verdadero si incluso un conjunto de los rangos permitidos permite los tiempos de descanso.

No entendí a qué te referías con tomar en consideración el día siguiente, no había datos para el día en los ejemplos dados. Sin embargo, este debería ser un buen punto de partida.

Si tiene alguna pregunta sobre el código, por favor pregunte 👋

 function calculateIsBetween(workTimes, breakTimes) { const allowedRanges = workTimes.map(({entryTime, exitTime}) => { const [hMin, mMin] = entryTime.split(":"); const [hMax, mMax] = exitTime.split(":"); return {hMin, hMax, mMin, mMax}; }); return breakTimes.every(({startBreak, endBreak}) => { const [hStart, mStart] = startBreak.split(":"); const [hEnd, mEnd] = endBreak.split(":"); return allowedRanges.some(({hMin, hMax, mMin, mMax}) => { if ( hStart < hMin || hEnd > hMax ) return false; if ( hStart > hMin && hEnd < hMax ) return true; if ( (hStart == hMin && mStart < mMin) || (hEnd == hMax && mEnd > mMax) ) return false; return true; }); }); } console.log( calculateIsBetween( [ {entryTime: '12:00', exitTime: '13:00'}, {entryTime: '14:00', exitTime: '15:00'} ], [ {startBreak: '12:05', endBreak: '12:10'}, {startBreak: '12:25', endBreak: '12:30'} ] ) ); //returns true console.log( calculateIsBetween( [ {entryTime: '12:00', exitTime: '13:00'}, {entryTime: '14:00', exitTime: '15:00'} ], [ {startBreak: '16:05', endBreak: '18:10'}, {startBreak: '12:25', endBreak: '12:30'} ] ) ); //returns false
 .as-console-wrapper { max-height: 100% !important; top: 0;}

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda