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

85
Vistas
Comprobar si una semana está entre dos semanas

Quiero volver verdadero si una semana está entre dos semanas. Es decir, el período es de la semana 48 (2021) a la semana 3 (2022). Entonces quiero volver verdadero si hay una semana en el medio.

La semana de la lección y el año es lo que estoy comprobando en el medio. Semana y año de inicio y semana y año de fin es el período.

Mi código a continuación no funciona para el ejemplo (semana 48 de 2021 -> semana 3 de 2022)

Prefiero no convertir a objetos de fecha, pero si es necesario, lo haré.

 const isSamePeriod = ( lessonWeek, lessonYear, startWeek, startYear, endWeek, endYear ) => { if (lessonWeek >= startWeek && lessonYear === startYear) { if (lessonWeek <= endWeek && lessonYear === endYear) { return true; } } return false; };
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede concatenar los valores como cadenas de año + semana siempre que la semana esté rellenada con ceros, luego compare, por ejemplo

 const isSamePeriod = ( lessonWeek, lessonYear, startWeek, startYear, endWeek, endYear ) => { let z = n => ('0'+n).slice(-2); let lesson = lessonYear + z(lessonWeek); let start = startYear + z(startWeek); let end = endYear + z(endWeek); return lesson >= start && lesson <= end; }; // Examples [[47,2021], [48,2021], [50,2021], [ 1,2022], [ 3,2022], [ 4,2022] ].forEach( arr => console.log(arr + ' ' + isSamePeriod(...arr, 48,2021, 3,2022)) );

También puede convertir los valores de la semana y el año en fechas, por ejemplo

 // Convert year, week to Date // Assumes ISO week: week starts on Monday, first week // starts on Monday before first Thursday of year function yearWeekToDate(year, week) { // 4th is always in first week let d = new Date(year, 0, 4); // Shift to prior Monday if not Monday d.setDate(d.getDate() - d.getDay() + 1); // Add 7 days for each week, decrement week number // as index starts at 1 // This could be included in the above adjustment d.setDate(d.getDate() + 7 * (week - 1)) return d; } const isSamePeriod = ( lessonWeek, lessonYear, startWeek, startYear, endWeek, endYear ) => { let lesson = yearWeekToDate(lessonYear, lessonWeek); return lesson >= yearWeekToDate(startYear, startWeek) && lesson <= yearWeekToDate(endYear, endWeek) }; // Examples [[47,2021], [48,2021], [50,2021], [ 1,2022], [ 3,2022], [ 4,2022] ].forEach( arr => console.log(`${arr} ${isSamePeriod(...arr, 48,2021, 3,2022)}`) );

about 4 years ago · Juan Pablo Isaza Denunciar

0

Los cheques deben estar separados, pero tiene el segundo anidado dentro del primero. Además, solo necesita verificar la semana si los años coinciden; ver comentarios:

 const isSamePeriod = ( lessonWeek, lessonYear, startWeek, startYear, endWeek, endYear ) => { return ( // Year is valid (lessonYear >= startYear && lessonYear <= endYear) || // Lesson is not in the start year or is late enough in the start year (lessonYear !== startYear || lessonWeek >= startWeek) || // Lesson is not in the end year or is early enough in the end year (lessonYear !== endYear || lessonWeek <= endWeek) ); };
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