A través del módulo 'date-fns', recibo números de cuántas semanas es la fecha de este año.
const current = '2022-03-10' const weekNumber = getWeek(current, 1) // 11Por el contrario, si solo conoces los números, querrás saber cómo hacer el número de la primera fecha de la semana.
La forma en que quiero saber.
const weekNumber = 11; const weekOfstartDate = anyFunc(weekNumber) // '2022-03-07'¿Sabes la respuesta a esta solución?
Puedes usar el token I:
var dateFns = require("date-fns"); console.log(dateFns.parse('10','I', new Date()));En npm.runkit.com que devuelve una fecha para el lunes 7 de marzo de 2022. Parece que date-fns asume el año de la semana actual. No tengo idea de cómo especificar el año, intentando:
console.log(dateFns.parse('2022-10','YYYY-II', new Date(),{ useAdditionalWeekYearTokens: true })); Lanza un error de rango: la cadena de formato no debe contener YYYY y II al mismo tiempo. De manera similar, para "2022W10" y tokens "YYYY'W'II", dice que los tokens Y e I no pueden estar en la misma cadena de formato.
Una función para hacer lo mismo es:
// Returns the first day (Monday) of the specified week // Year defaults to the current local calendar year function getISOWeek(w, y = new Date().getFullYear()) { let d = new Date(y, 0, 4); d.setDate(d.getDate() - (d.getDay() || 7) + 1 + 7*(w - 1)); return d; } // Mon Mar 14 2022 console.log(getISOWeek(11).toString()); // Mon Jan 02 2023 console.log(getISOWeek(1,2023).toString()); // Mon Dec 28 2026 console.log(getISOWeek(53,2026).toString());Una función robusta debería validar la entrada de modo que el número de semana sea del 1 al 53 y que 53 solo se permita para años que tengan 53 semanas.