Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

261
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda