Se você nunca programou um computador antes de 2000, provavelmente ficará confuso com o seguinte:
> new Date(1, 0, 1);
Tue Jan 01 1901 00:00:00 GMT+0800 (HKT)
O quê .. o quê? A documentação do MDN diz que posso colocar o ano como um número no construtor e um JS Date pode representar -100,000,000 days to 100,000,000 days relative to 01 January, 1970 UTC
. Vamos ver aqui, 1970 * 365 = 719050 dias, não posso ter 99280950 dias bissextos, posso?
Problema
O construtor de data do Javascript precisa lidar com anos anteriores ao Y2K, então o número entre 0 e 99 é tratado como se representasse os anos 1900-1999.
Solução
> var d = new Date(1, 0, 1) // Put the date in as usual
> d.setFullYear(1) // Now you get Jesus' birthday.
Ah hum, Jesus nasceu em quê? 6 a 4 AC?