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

227
Views
Cómo iterar el número de semana, la fecha de inicio/finalización de las semanas usando el momento

¿Cómo puedo obtener week number , from/to date de un mes específico?

El siguiente código es lo que construyo para mostrar week number , from/to date de un mes específico y devuelve un bucle infinito cada vez que inserto la función dentro del bucle.

 function getISOWeeksInMonth(month, year) { let weekStart = new Date(year, month - 1, 1); weekStart.setDate(weekStart.getDate() - (weekStart.getDay() || 7) + 1); let weekEnd = new Date(weekStart); weekEnd.setDate(weekEnd.getDate() + 6); let weekNum = moment(weekStart, "YYYY-MM-DD").week() let weeks = []; do { weeks.push({ weekNum : weekNum++, start: new Date(weekStart), end: new Date(weekEnd) }); weekStart.setDate(weekStart.getDate() + 7); weekEnd.setDate(weekEnd.getDate() + 7); } while (weekStart.getMonth() < month); return weeks; } _.forEach(moment.months(), function (month_name) { var month_number = moment().month(month_name).format("MM"); getISOWeeksInMonth(month_number, 2022).forEach(week => console.log( 'Week : ' + week.weekNum + '\nStart: ' + week.start.toDateString() + '\nEnd : ' + week.end.toDateString()) ); })

El resultado debe devolver la lista el week number , from/to date
Ejemplo de URL: https://savvytime.com/week-number/philippines/2022

Aquí está la muestra cuando ejecuto la función fuera del bucle:

 function getISOWeeksInMonth(month, year) { let weekStart = new Date(year, month - 1, 1); weekStart.setDate(weekStart.getDate() - (weekStart.getDay() || 7) + 1); let weekEnd = new Date(weekStart); weekEnd.setDate(weekEnd.getDate() + 6); let weekNum = moment(weekStart, "YYYY-MM-DD").week() let weeks = []; do { weeks.push({ weekNum : weekNum++, start: new Date(weekStart), end: new Date(weekEnd) }); weekStart.setDate(weekStart.getDate() + 7); weekEnd.setDate(weekEnd.getDate() + 7); } while (weekStart.getMonth() < month); return weeks; } getISOWeeksInMonth(1, 2022).forEach(week => console.log( 'Week : ' + week.weekNum + '\nStart: ' + week.start.toDateString() + '\nEnd : ' + week.end.toDateString()) );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.2/moment.min.js"></script>

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

 function getISOWeeksInMonth(month, year) { let weekStart = new Date(year, month - 1, 1); weekStart.setDate(weekStart.getDate() - (weekStart.getDay() || 7) + 1); let weekEnd = new Date(weekStart); weekEnd.setDate(weekEnd.getDate() + 6); let weeks = []; do { let weekNum = moment(weekStart, "YYYY-MM-DD").week() weeks.push({ weekNum : weekNum, start: new Date(weekStart), end: new Date(weekEnd) }); weekStart.setDate(weekStart.getDate() + 7); weekEnd.setDate(weekEnd.getDate() + 7); } while (weekStart.getMonth() < month && (weekStart.getMonth() || (month < 12) )); return weeks; } let _ = moment.months() _.forEach(function (month_name) { var month_number = moment().month(month_name).format("MM"); getISOWeeksInMonth(month_number, 2022).forEach(week => console.log( 'Week : ' + week.weekNum + '\nStart: ' + week.start.toDateString() + '\nEnd : ' + week.end.toDateString()) ); })
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.2/moment.min.js"></script>

Cuando calcula las semanas en diciembre (mes 12), comienza con la última semana del mes anterior (noviembre, es decir, 11), y en su ciclo do {...} while while, agrega 7 días a weekStart . Hasta aquí todo bien, pero tu while (weekStart.getMonth() < month) está verificando el valor 0-11 de weekStart.getMonth() , y cuando avanza desde 11, en lugar de ir a 12, va a 0. Entonces siempre es menos de 12 (¡diciembre!)!

Puedes arreglar esto ajustando tu while a:

 while (weekStart.getMonth() < month && (weekStart.getMonth() || (month < 12) ))
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!