Creé un método que devuelve los últimos meses de acuerdo con la fecha actual y cuántos meses del pasado necesita, parece que el objeto de fecha de JavaScript se está comportando incorrectamente.
Supongo que el problema solo apareció hoy, ya que es el 29 del mes actual y restando 1 mes del 29 March , que se supone que es 29 February (no existe), javascript retrocede a +1 día ...
¿Puede alguien sugerir una gran solución para esto? Gracias 🙌
export type Config = { n: number; i18n: i18n; }; export default function NMonthsAgo(config: Config): MonthsAgo[] { const date = new Date(); const { i18n } = config; let { n } = config; n = Math.max(n, 0); // add one month in future to include the current one. date.setMonth(date.getMonth() + 1); return Array.from({ length: n || 1 }) .map(() => { date.setMonth(date.getMonth() - 1); console.log(date.toDateString()); ===> console print. return { monthName: formatDate(i18n, date, { month: 'long' }), monthNameShort: formatDate(i18n, date, { month: 'short' }), year: formatDate(i18n, date, { year: 'numeric' }), }; }) .reverse(); }Producción:
NMonthsAgo.js:36 Wed Dec 29 2021 NMonthsAgo.js:36 Mon Nov 29 2021 NMonthsAgo.js:36 Fri Oct 29 2021 NMonthsAgo.js:36 Wed Sep 29 2021 NMonthsAgo.js:36 Sun Aug 29 2021 NMonthsAgo.js:36 Thu Jul 29 2021 NMonthsAgo.js:36 Tue Jun 29 2021 NMonthsAgo.js:36 Sat May 29 2021 NMonthsAgo.js:36 Thu Apr 29 2021 NMonthsAgo.js:36 Mon Mar 29 2021 <=== Mars is returned twice... NMonthsAgo.js:36 Mon Mar 01 2021 <=== Mars is returned twice... NMonthsAgo.js:36 Mon Feb 01 2021 NMonthsAgo.js:36 Fri Jan 01 2021 NMonthsAgo.js:36 Wed Dec 29 2021