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

250
Vistas
¿Cómo determinar si dos rangos de fechas se superponen?

Tengo las siguientes fechas en marcas de tiempo utc. Me gustaría saber si los dos rangos de tiempo se superponen. Aquí está el código que tengo hasta ahora:

 dateRangeOverlaps(aStart, aEnd, bStart, bEnd) { if (aStart <= bStart && bStart <= aEnd) return true; // b starts in a if (aStart <= bEnd && bEnd <= aEnd) return true; // b ends in a if (bStart < aStart && aEnd < bEnd) return true; // a in b return false; }

Desafortunadamente, cuando las horas de inicio y las horas de finalización se superponen, la función devuelve verdadero. Por ejemplo, si tengo las horas: 9 am a 11 am y 11 am a 1 pm, estas dos horas no deberían superponerse, pero la función devuelve verdadero, no obstante.

O si tengo la hora de 8 am a 11 am y de 11 am a 1 pm, devuelve verdadero.

¿Cómo puedo hacer que devuelva falso para los tiempos anteriores?

asi que

 // 11:00 const aStart = 1641052800000; // 11:30 const aEnd = 1641054600000; // 9:00 const bStart = 1641045600000; // 11:00 const bEnd = 1641052800000; // should return false console.dir(dateRangeOverlaps(aStart, aEnd, bStart, bEnd))
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si completa el ejemplo con el código (9 a. m. a 11 a. m. y 11 a. m. a 1 p. m.), puede ver fácilmente el motivo:

 dateRangeOverlaps(aStart, aEnd, bStart, bEnd) { if (9am <= 11am && 11am <= 11am) return true; // returns true // ... }

Cambiaría la lógica a la siguiente para que sea más fácil de leer:

 function dateRangeOverlaps(aStart, aEnd, bStart, bEnd) { // Make sure aStart is before bStart if (aStart > bStart) { // Exchange a and b [aStart, aEnd, bStart, bEnd] = [bStart, bEnd, aStart, aEnd] } // Check overlap return aEnd > bStart }

Vea esta respuesta para un método más eficiente.

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