Por que o Javascript trata dias e meses de maneira diferente?


42

Percebi que em JavaScript, ao criar a Date, os meses são baseados em zero e os dias não.

Por exemplo:

var foo = new Date(2012, 1, 1)

produz 01 de fevereiro de 2012

Por que é isso?


6
months = ['Jan', 'Feb',..., 'Nov', 'Dec']; month = months[date.getMonth()];
zzzzBov

Respostas:


50

Provavelmente a idéia é que os meses sejam considerados um índice em uma matriz de nomes de meses, enquanto os dias são simplesmente "contados".


21
Onde isso faz sentido do ponto de vista da resposta, é uma loucura pensar que essa lógica existe há quanto tempo e eu nunca a questionei antes.
rlemon

2
@rlemon O fato de que você nunca questionou que a lógica antes só prova que faz sentido :)
dasblinkenlight

14
FWIW, eu nunca pensei que isso fizesse muito sentido. O processamento de datas em JavaScript sempre foi algo que me fez estremecer, porque geralmente esquecia coisas assim até começar a depurar resultados estranhos.
FrustratedWithFormsDesigner

2
FWIW, eu não sou desenvolvedor de front-end e nem sempre tenho que lidar com datas em Javascript, além das ocasionaisnew Date().getTime()
rlemon

20
Quando se trata de Javascript, "é por isso que eles fizeram isso" e "isso faz sentido" são duas coisas que você raramente ouve em conjunto.
Tridus

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.