what is the problem and how to fix this ?
> 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)
creating Date(2022,5,31) object
>Solution :
Month is 0 indexed, i.e. 0 represents January.
When you pass in a string with explicit date formatting like "2022-5-31" the month is not 0 indexed.
> 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)
This becomes explicit when you try putting days of 35, for example:
> console.log(new Date(2022, 05, 35));
< Tue Jul 05 2022 00:00:00 GMT+0100 (British Summer Time)