He estado trabajando con fechas en el nodo desde hace un tiempo. Tuve un problema en el que la fecha daba una fecha incorrecta después de agregar meses. Hice algunas pruebas.
const d = new Date('2021-05-01'); console.log(d); // 2021-05-01T00:00:00.000Z d.setMonth(d.getMonth() + 1); console.log(d); // 2021-05-31T00:00:00.000ZEstaba confundido por qué esto no solo me estaba dando 2021-06-01 después de ejecutar
console.log(d.getMonth())Me di cuenta que regresaba 3 que no es mayo
luego corrí
console.log(d.toDateString())Que me dio el vie 30 abr 2021
Entonces, mi pregunta es ¿por qué hace que la nueva fecha ('2021-05-01') sea realmente el 30 de abril?
Tengo node.js v17.3.0 y no puedo recrear su problema (lamentablemente, aún no puedo comentar).
Entonces, mi sugerencia sería verificar la instalación de su nodo o tal vez reinstalar node. Después de ejecutar su código en el nodo REPL, obtengo el Tue Jun 01 2021 como resultado. Vivo en Alemania, no sé si eso ayuda.
Terminé descubriendo que es debido a las zonas horarias. Debería suponer eso, pero si alguien más necesita una solución, simplemente puede agregar la hora a la fecha para llevarla a la fecha real.
const date = new Date('2021-05-01 00:00:00');