javascript - Comportamiento extraño de new Date(), devuelve el mes siguiente
Realmente agradecería tu ayuda y explicación.
Creé un método que devuelve todos los días del mes, estableciendo la fecha a partir de dos parámetros: el año y el mes:
private _getDaysOfMonth(year: number, month: number): Array<Date> {
const date = new Date(year, month, 1)
const days = []
while (date.getMonth() === month) {
days.push(date)
console.log(date) // works correctly, example: Fri Jan 01 2021 00:00:00 GMT+0300 (Moscow Standard Time)
date.setDate( date.getDate() + 1 )
}
console.log(days) // I expect an array of days from January 1 to January 31, 2021, But I get February
return days
}
Llamando al método con los parámetros 2021 y 0
this._getDaysOfMonth(this._year, this._month)
¡Y en lugar de un arreglo de días de enero, obtengo un arreglo de días de febrero!
Este es mi console.log console.log
Respuesta #1
new Date() para generar una nueva instancia de fecha cada vez que agregas un elemento:
function getDaysOfMonth (year, month) {
const date = new Date(year, month)
const days = []
while (date.getMonth() === month) {
days.push(new Date(date)) // new Date() to generate new date instance
console.log(date)
date.setDate(date.getDate() + 1)
}
console.log(days)
return days
}
getDaysOfMonth(2021, 1)
