As Bergi correctly points out, the specification leaves it until implementation to return a date when it is not one of the standard formats.
Here's how it is implemented in the Chromium V8 processor:
Dateparser.cc
if (!is_iso_date_) { if (Between(year, 0, 49)) year += 2000; else if (Between(year, 50, 99)) year += 1900; }
In Chrome 41.0.2272.76 :
Date.parse(0) returns 946665000000 , which is Sat Jan 01 2000 00:00:00
Date.parse(49) returns 2493052200000 , which is Fri Jan 01 2049 00:00:00
Date.parse(50) returns -631171800000 , which is equal to Sun Jan 01 1950 00:00:00
(Translated time is GMT+5.30 ; the millisecond value will change depending on your time zone)
Firefox returns NaN for all of these cases.
source share