Necesito crear un menú desplegable para un sistema de programación que enumere los próximos 7 lunes y los últimos 2 lunes, según la fecha actual. La fecha actual obviamente podría ser cualquier día de la semana, pero la lista solo debe mostrar los lunes.
Como tal, también necesito formatos AAAA-MM-DD para que se registren los valores, así como formatos de visualización "amigables" para enumerar en el menú desplegable.
Por lo tanto, necesito una matriz de JavaScript de las fechas de inicio de la semana laboral (lunes) en función de la fecha actual: 7 semanas por delante y 2 semanas por delante. No puedo encontrar nada como esto ya en SO.
Esto es lo que se me ocurrió para abordar esto. No depende de ninguna dependencia para formatear. Crea dos matrices, que luego se pueden usar para los valores desplegables:
let production_week_choices = [] const today = new Date(); // test with new Date('2022-01-01') const day = today.getDay() // Today's current day-of-week (0=Sun ... 6=Sat) numerically var display_format_options = { weekday: 'short', month: 'short', day: 'numeric' }; for (let i = -49; i < 14; i+=7) { // 7 weeks forward, 2 weeks back, increment loop by 7 days let i_monday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - day + (day === 0 ? -6 : 1) - i); // adjust when day is Sunday let date_value = i_monday.toISOString().split('T')[0] // provide in YYYY-MM-DD string format let date_display = i_monday.toLocaleDateString("en-US", display_format_options) // provide in specified format production_week_choices.push({"Value": date_value, "Display": date_display}) } console.log(production_week_choices)¡Espero que alguien más encuentre esto útil!