Pourquoi Javascript traite-t-il les jours et les mois différemment?


42

J'ai remarqué qu'en JavaScript, lors de la création d'un Date, les mois sont basés sur zéro et les jours ne le sont pas.

Par exemple:

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

produit le 1er février 2012

Pourquoi est-ce?


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

Réponses:


50

L'idée la plus probable est que les mois sont considérés comme un index dans un tableau de noms de mois, alors que les jours sont simplement "comptés".


21
Lorsque cela semble logique du point de vue de la réponse, il est insensé de penser que cette logique existe depuis combien de temps et que je ne l’avais jamais mise en doute auparavant.
rlemon

2
@rlemon Le fait que vous n'ayez jamais mis en doute cette logique auparavant prouve seulement que cela a du sens :)
dasblinkenlight 13/12/2012

14
FWIW, je n'ai jamais pensé que cela avait beaucoup de sens. Le traitement des dates en JavaScript était toujours quelque chose qui me faisait frémir, car j'oubliais généralement de telles choses jusqu'à ce que je commence à déboguer des résultats étranges.
FrustratedWithFormsDesigner

2
FWIW, je ne suis pas un développeur front-end et n'ai pas souvent à traiter des dates en Javascript, à l'exception de temps à autrenew Date().getTime()
rlemon

20
"C’est pourquoi ils l’ont fait" et "cela fait sens" sont deux choses que vous entendez rarement ensemble.
Tridus

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.