Why does the presence/absence of a leading zero in the Date() javascript constructor make a difference of 16 or 17 hours? [duplicate]

I’m trying to understand the Javascript Date() constructor function, and I can’t figure why the output of new Date(xxxx-0a-0b) differs from new Date(xxxx-0a-b) and new Date(xxxx-a-0b) by 16 or 17 hours. I briefly did some testing in the console, which showed me that this occurs with all years, and that apparently dates prior to around Mar 15 lead to a 16-hour difference while dates after Mar 15 lead to a 17-hour difference (I say “around” because the exact date seems to vary from year to year).

I would have been able to understand if the constructor function just crashed if it only accepts dates in the xxxx-xx-xx format, but 1) what’s the significance of the 16- and 17-hour differences; 2) why would a missing leading zero result in these differences; and 3) why does the number of hours also change always around Mar 15? Thanks for any clarification.