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

195
Vistas
Compruebe si el rango de tiempo se superpone con otro rango de tiempo

Supongamos que tengo una fecha de inicio y una fecha de finalización de la siguiente manera

 end: "2021-10-22T06:00:00.000Z" start: "2021-10-22T05:00:00.000Z"

Quiero verificar si otro rango de tiempo dado se superpone con el rango de tiempo anterior en javascript. Intenté usar el momento de la siguiente manera.

 return ( moment(timerange1.duration.end) <= moment(timerange2.duration.start) || moment(timerange1.duration.start) >= moment(timerange2.duration?.end) );

Pero esto no produce los resultados correctos. ¿Cuál sería la forma correcta de verificar si un cierto rango de tiempo se superpone con otro rango de tiempo usando javascript?

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

0

Considera esto:

dibujo sencillo

En el caso A y C no se superponen.

Pero, ¿qué es cierto en B que no es cierto en A o C?

Bueno, el comienzo, o el final del rojo, está entre el comienzo y el final del azul. Eso siempre será cierto para períodos de tiempo superpuestos.

Código de ejemplo:

 if( (red.start > blue.start && red.start < blue.end) || (red.end > blue.start && red.end< blue.end) ) { // do something }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar el complemento twix.js por un momento para manejar los rangos de fechas. En tu código, necesitas hacer algo así. Este es un fragmento de código de muestra que puede modificar según sus necesidades.

 var t1 = { start: "1982-01-25T09:30", end: "1982-01-25T13:30", }; var t2 = { start: "1982-01-23T13:30", end: "1982-01-25T12:30", }; var t3 = { start: "1982-01-24T13:30", end: "1982-01-25T10:30", }; var t1Range = moment(t1.start).twix(t1.end); var t2Range = moment(t2.start).twix(t2.end); var t3Range = moment(t3.start).twix(t3.end); t1Range.overlaps(t2Range) || t1Range.overlaps(t3Range); //=> true
about 4 years ago · Juan Pablo Isaza Denunciar

0

return ( (moment(timerange1.duration.start) >= moment(timerange2.duration.start) && moment(timerange1.duration.start) <= moment(timerange2.duration.end)) || (moment(timerange1.duration.end) >= moment(timerange2.duration.start) && moment(timerange1.duration.end) <= moment(timerange2.duration.end)) || (moment(timerange2.duration.start) >= moment(timerange1.duration.start) && moment(timerange2.duration.start) <= moment(timerange1.duration.end)) )

hay 3 casos diferentes para considerar como superposición

intervalo1: |-----|
rango de tiempo2: |-----|

intervalo1: |-----|
rango de tiempo2: |-----|

rango de tiempo1: |-----------|
rango de tiempo2: |-----|

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