Perché Javascript tratta giorni e mesi in modo diverso?


42

Ho notato che in JavaScript, durante la creazione di Date, i mesi sono a base zero e i giorni no.

Per esempio:

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

produce il 1 ° febbraio 2012

Perchè è questo?


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

Risposte:


50

Molto probabilmente l'idea è che i mesi siano pensati come un indice in una matrice di nomi di mesi, mentre i giorni vengono semplicemente "contati".


21
Laddove ciò ha senso dal punto di vista della risposta, è pazzesco pensare che questa logica sia in circolazione da quanto tempo e non l'ho mai messa in discussione prima.
rlemon,

2
@rlemon Il fatto di non aver mai messo in dubbio questa logica prima dimostra solo che ha senso :)
dasblinkenlight

14
FWIW, non avrei mai pensato che avesse molto senso. L'elaborazione delle date in JavaScript è sempre stata qualcosa che mi ha fatto rabbrividire, perché di solito dimenticavo cose del genere fino a quando non ho iniziato a eseguire il debug di strani risultati.
FrustratedWithFormsDesigner,

2
FWIW, non sono uno sviluppatore di front-end e spesso non ho a che fare con date in Javascript a parte l'occasionalenew Date().getTime()
rlemon

20
Quando si tratta di Javascript, "questo è il motivo per cui l'hanno fatto" e "questo ha un buon senso" sono due cose che raramente ascolti insieme.
Tridus,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.