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

152
Vistas
¿Cómo obtengo una matriz de todos los días de la semana dada la fecha actual en javascript?

Tengo el valor del día de la semana (0-6 para Sun-Sat)... ¿cómo obtengo una matriz de días (a partir del domingo para la semana dada?

Esto es lo que estoy tratando de hacer:

Un usuario hace clic en un día (es decir, 10 de mayo) y genera una matriz de fechas para la semana actual:

 function selectWeek(date) { selectedWeek = []; let d = new Date(date.key); console.log(d); console.log(date.weekday, 'weekday'); console.log(date); for (let i = 0; i < date.weekday; i++) { console.log(i, 'pre'); let currD = d.setDate(d.getDate() - i).toString(); console.log(currD); selectedWeek.push(currD); } for (let i = date.weekday; i < 7; i++) { console.log(i, 'post'); selectedWeek.push(d.setDate(d.getDate() + i).toString()); } console.log(selectedWeek); }

Necesito objetos de fecha de domingo a sábado.

No estoy usando una biblioteca de fechas, así que prefiero las soluciones javascript de vainilla.

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

0

Cree una matriz con 7 elementos, reste el día de la semana y agregue el índice como día:

 function selectWeek(date) { return Array(7).fill(new Date(date)).map((el, idx) => new Date(el.setDate(el.getDate() - el.getDay() + idx))) } const date = new Date(); console.log(selectWeek(date));

Estoy usando

 fill(new Date(date))

para crear una copia y no modificar el argumento. Puedes obtener los días de un mes con el mismo concepto:

 function selectMonth(date) { return Array(31).fill(new Date(date)).map((el, idx) => new Date(el.setDate(1 + idx))).filter(el => el.getMonth() === date.getMonth()); } const date = new Date(); console.log(selectMonth(date));

about 4 years ago · Juan Pablo Isaza Denunciar

0

así es como yo resolvería este:

 function selectWeek(date) { let selectWeek = []; for (let i=0; i<7; i++) { let weekday = new Date(date) // clone the selected date, so we don't mutate it accidentally. let selectedWeekdayIndex = date.getDay() // ie 5 for friday let selectedDay = date.getDate() // 1-31, depending on the date weekday.setDate(selectedDay - selectedWeekdayIndex + i) selectWeek = [...selectWeek, weekday] } return selectWeek; }

Tomemos como ejemplo la fecha de hoy: 18.02.22. Viernes. Hacemos 6 iteraciones. En el primero obtenemos el índice de día de la semana seleccionado, que es 5 para el viernes. Clonamos la fecha y restablecemos su día (18) reduciéndolo a este número: 18-5 = 13. Este es el día del domingo. Luego vamos incrementando los días en uno para llenar el resto de la semana.

Por supuesto, se puede optimizar y escribir mucho más corto, pero traté de mostrar y explicar la lógica.

about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Revisaste los prototipos de Date antes?

Creo que Date.prototype.getDay() puede hacer lo que quieras:

 function selectWeekDays(date) { var i, d = new Date(date), a = []; // console.log(d.getDay()); // Number of the day d.setDate(d.getDate() - d.getDay() - 1); // Set date one day before first day of week for (i=0; i<7; i++) { d.setDate(d.getDate() + 1); // Add one day a.push(d.valueOf()); } return a; } var result = selectWeekDays('2022-01-01') // Satureday = 6 console.log(result); result.forEach(e => console.log(new Date(e).toString()));

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