Usando moment.js, intento generar una matriz de los 31 días anteriores en un formato particular de moment.js. Este es mi código actual:
let labels = []; const popArray = () => { let nowMonth: any = moment().format('D'); let newMonth = parseInt(nowMonth); let startMonth = newMonth - 31; for(let i = startMonth; i < newMonth; i++){ labels.push(moment().day(i).format('MM-DD')); } console.log(labels) } popArray(); Cuando ejecuto este código, obtengo una matriz de 31 días, siendo el primero "11-10" y el último "12-10". ¿Por qué es esto? Probé diferentes configuraciones donde startMonth es "-31" y newMonth es "0" pero aún no funciona.
Simplemente puede usar el método de resta de esta manera:
let labels = []; const popArray = () => { for (let i = 0; i <= 31; i++){ labels.push(moment().subtract(i, "days").format('MM-DD')) } console.log(labels) } popArray();En lugar de analizar el día en un número entero y hacer un bucle de esa manera, use la función de subtract integrada de momentjs para retroceder los 31 días desde la fecha actual, luego haga un bucle hacia adelante usando la función de add en momentjs .
const DAYS = () => { const days = [] const dateStart = moment().subtract(31, 'days') const dateEnd = moment() while (dateEnd.diff(dateStart, 'days') >= 0) { days.push(dateStart.format('MM-DD')); dateStart.add(1, 'days') } return days; } console.log(DAYS())