Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

260
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!