Where does GMT-0456 Timezone Come From?
Recently, someone on the DCTech Slack community asked why the Date.prototype.toDateString function is having an off-by-one error:
new Date("2020-10-17").toDateString();
"Fri Oct 16 2020"My immediate response was: timezone.
The group then proceeded to discover that the Date constructor would interpret a date-only string as being in UTC timezone.
Washington, DC uses Eastern Daylight Time that is four hours behind UTC, so the timezone of the constructed Date object is 20:00:00 local time on the previous date.
Since toDateString uses local time, it prints as the previous date.
After that, I started testing some boundary conditions:
new Date("0001-01-01").toString()
"Sun Dec 31 0000 19:03:58 GMT-0456 (Eastern Standard Time)"
new Date("0000-01-01").toString()
"Fri Dec 31 -0001 19:03:58 GMT-0456 (Eastern Standard Time)"




