¿Cuál es el problema y cómo solucionarlo?
> new Date(2022,5,31) < Fri Jul 01 2022 00:00:00 GMT+0430 (Iran Daylight Time) > new Date("2022-5-31") < Tue May 31 2022 00:00:00 GMT+0430 (Iran Daylight Time)El mes está indexado a 0, es decir, 0 representa enero. Cuando pasa una cadena con formato de fecha explícito como "2022-5-31", el mes no está indexado en 0.
> new Date(2022,5,31) ^ June ^ 31 -> 01 of the next month (Jul) < Fri Jul 01 2022 00:00:00 GMT+0430 (Iran Daylight Time) > new Date("2022-5-31") ^ May ^ 31 valid day < Tue May 31 2022 00:00:00 GMT+0430 (Iran Daylight Time)Esto se vuelve explícito cuando intenta poner días de 35, por ejemplo:
> console.log(new Date(2022, 05, 35)); < Tue Jul 05 2022 00:00:00 GMT+0100 (British Summer Time)En el primer ejemplo, enero es 0 mientras que en el segundo ejemplo, enero es 1 .
Junio solo tiene 30 días, por lo que el 31 adicional se traslada a julio.