Necesito crear una función que produzca un rango de fechas basado en el día de la reunión de un usuario. Los usuarios se reúnen en días diferentes, en este ejemplo usaré "John" que se reúne con su grupo los miércoles. Las dos fechas que necesito son el miércoles más reciente y el próximo miércoles. Por ejemplo, si hoy es lunes 15 de noviembre, la función debería devolver 10/11/2021 y 17/11/2021
Mi código actual solo funciona el día de la reunión o después de que ya haya sucedido porque se extrae el miércoles de esta semana y el miércoles de la próxima semana...
const DateRange = () => { switch (user.groups[0].meetingDay) { case "monday": return [1, 8]; case "tuesday": return [2, 9]; case "wednesday": return [3, 10]; case "thursday": return [4, 11]; case "friday": return [5, 12]; case "saturday": return [6, 13]; case "sunday": return [0, 7]; } }; const firstNumber = DateRange().push(0); const secondNumber = DateRange().pop(0); const goalsDateRangeStart = moment().day(firstNumber).format("l"); const goalsDateRangeEnd = moment().day(secondNumber).format("l");
Cuando el código anterior se use el 15 de noviembre, me dará 17/11/2021-24/11/2021
El momento ya no es compatible. Aquí hay una solución de API de fecha de JavaScript.
NOTA: los valores de día van desde 0 (domingo) - 6 (sábado)
La fecha de inicio se calcula mediante: valor de fecha (15) - (valor del día de hoy - (#días en una semana - el valor del parámetro del día)
15 - ( 1 + 7 - 3) = 10
- la fecha de inicio es el 10
La fecha de finalización es 7 días después:
10 + 7 = 17th
- el día final es el 17
El código garantiza que se utilicen objetos de fecha separados para cada fecha.
Convoca la función con fecha de hoy con encuentros fijados para el miércoles (3). La función devuelve un objeto en la forma {start: Date, end: Date}
:
// Takes a Date object (default today) and int Day of the week (default Monday) function dateRange(date = new Date(), day = 0) { const start = new Date(date.setDate(date.getDate() - (date.getDay() + (7 - day)))); return { start: start, end: new Date(new Date(start).setDate(start.getDate() + 7)) }; } // Call function with today's date with meetings scheduled for Wednesdays const range = dateRange(new Date(), 3); console.log(range.start.toDateString(),'-', range.end.toDateString());