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

321
Vistas
Cómo obtener semanas entre una fecha y semana del año, año tupla

¿Cómo obtengo el número de semanas entre una fecha determinada y la tupla (weekofyear, year)? Preferiblemente usando momentjs.

 function getWeeksBetweenStartDate(weekOfYear, year) const date = moment().set({ year: 1982, month: 3, day: 18, hour: 0, minute: 0, second: 0, }); const weeksSinceDate = moment() .year(year) .isoWeek(weekOfYear) .day(0) .hour(0) .minute(0) .subtract(date) .weeks() ; } function getWeeks(date) { return getWeeksBetweenStartDate(date.isoWeeks(), date.year()); } getWeeks( moment().set({ year: 1982, month: 3, day: 21, hour: 0, }) ) // returns 0 getWeeks( moment().set({ year: 1982, month: 3, day: 23, hour: 0, minute: 0, }) ) // returns 1

Aunque las dos fechas de ejemplo son parte de la misma semana, se devuelve un delta de semana diferente.

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

0

Creo que hay varios errores en el código:

  • Primero, no debe hacer eso .subtract(date) en getWeeksBetweenStartDate , después de la resta, la fecha será cercana a 1970 (la época UTC). En cambio, deberías
  • No debe usar el método isoWeeks , porque en isoWeeks , el lunes es el comienzo de una semana.
  • Es mejor configurar moment.locale('us') al principio, para garantizar que una semana siempre comience el domingo.

El siguiente puede ser el código correcto que esperas:

 moment.locale("us") function getWeeksBetweenStartDate(date) { const weeksBegin = moment().set({ year: 1982, month: 3, day: 18, hour: 0, minute: 0, second: 0, }).weeks(); const weeksEnd = date.weeks(); return weeksEnd - weeksBegin; } function getWeeks(date) { return getWeeksBetweenStartDate(date); } console.log(getWeeks( moment().set({ year: 1982, month: 3, day: 21, hour: 0, }) ) // returns 0 , getWeeks( moment().set({ year: 1982, month: 3, day: 23, hour: 0, minute: 0, }) ) // returns 1 )
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