Obtengo la fecha de los últimos n días a partir de hoy usando una función:
function get_date_of_last_n_days_from_today(n){ return new Date(Date.now() - (n-1) * 24 * 60 * 60 * 1000); } Entonces, si se ejecuta el código anterior para obtener la fecha del tercer día anterior a partir de hoy (incluido), get_date_of_last_n_days_from_today(3)
Pero la salida de arriba regresa -
Sun Oct 31 2021 09:59:58 GMT+0530 (India Standard Time)
Quiero convertir la salida solo en YYYY-MM-DD ¿Cómo hago esto?
Puede usar estos métodos desde el objeto de fecha y formatearlo usted mismo
function get_date_of_last_n_days_from_today(n) { const date = new Date(); date.setDate(date.getDate() - n); const pad = n => n.toString().padStart(2, '0'); const yyyy = date.getFullYear(), mm = pad(date.getMonth() + 1), dd = pad(date.getDate()); return `${yyyy}-${mm}-${dd}`; } console.log(get_date_of_last_n_days_from_today(3)); o use bibliotecas como dayjs o date-fns para simplificar
// dayjs function get_date_of_last_n_days_from_today(n) { return dayjs().subtract(n, 'day').format('YYYY-MM-DD'); } // date-fns function get_date_of_last_n_days_from_today(n) { return format(subDays(new Date(), n), 'yyyy-MM-dd'); }Yo lo haría así.
const day = 24 * 60 * 60 * 1000; const padZeros = (num, places) => String(num).padStart(places, '0'); function get_date_of_last_n_days_from_today(n) { const date = new Date(Date.now() - (n - 1) * day); return `${date.getFullYear()}-${padZeros(date.getMonth() + 1, 2)}-${padZeros(date.getDate(), 2)}`; } Sin embargo, este proceso de formato de fecha es mucho más fácil cuando se usan bibliotecas como day.js