Warum behandelt Javascript Tage und Monate unterschiedlich?


42

Ich habe festgestellt, dass beim Erstellen von in JavaScript die DateMonate auf Null basieren und die Tage nicht.

Zum Beispiel:

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

produziert am 1. Februar 2012

Warum ist das?


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

Antworten:


50

Höchstwahrscheinlich ist die Idee, dass die Monate als Index für eine Reihe von Monatsnamen gedacht sind, während Tage einfach "gezählt" werden.


21
Wo dies aus der Sicht der Antwort Sinn macht, ist es verdammt verrückt zu glauben, dass es diese Logik schon seit wie langer Zeit gibt und ich sie noch nie in Frage gestellt habe.
Rlemon

2
@rlemon Die Tatsache, dass Sie diese Logik noch nie in Frage gestellt haben, beweist nur, dass es Sinn macht :)
dasblinkenlight

14
FWIW, ich hätte nie gedacht, dass es viel Sinn macht. Die Verarbeitung von Datumsangaben in JavaScript hat mich immer erschüttert, weil ich solche Dinge normalerweise vergessen habe, bis ich anfing, seltsame Ergebnisse zu debuggen.
FrustratedWithFormsDesigner

2
FWIW, ich bin kein Front-End-Entwickler und muss mich nicht oft mit Datumsangaben in Javascript auseinandersetzen, außer gelegentlichnew Date().getTime()
13.12.12

20
Wenn es um Javascript geht, sind "das ist der Grund, warum sie es getan haben" und "das ergibt einen guten Sinn" zwei Dinge, die man selten zusammen hört.
Tridus

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.