Navigieren durch Monatsdiskrepanzen im Datumskonstruktor von JavaScript
Bei der Arbeit mit Datumsangaben in JavaScript ist es wichtig, die Besonderheiten der Indizierung von Monaten zu verstehen. Eine aktuelle Abfrage zu Mozilla Firefox Firebug gab Anlass zur Sorge:
var myDate = new Date(2012, 9, 23, 0, 0, 0, 0); console.log(myDate);
Ausgabe:
Date {Tue Oct 23 2012 00:00:00 GMT-0400 (Eastern Daylight Time)}
Als der Benutzer sich mit der Diskrepanz befasste, beobachtete er ein unerwartetes Ergebnis: JavaScript gab stattdessen ein Datum im Oktober zurück September, wie beabsichtigt.
Enthüllung der Wahrheit: Nullbasierte Indizierung
Der Schlüssel liegt in der nullbasierten Indizierung, die der Date-Konstruktor von JavaScript seit Monaten verwendet. In diesem Indexierungsschema beginnen die Monate mit 0 für Januar und 11 für Dezember. Daher entspricht der im Konstruktor (9) übergebene Monatsindex tatsächlich Oktober und nicht September.
Klarstellung mit Referenzen:
Das Mozilla Developer Network (MDN) bietet explizite Anleitung:
month: Integer value representing the month, beginning with 0 for January to 11 for December.
Zusätzlich bietet die ECMAScript-Sprachspezifikation einen technischen Einblick:
7. Let mn be ?(ℝ(m) modulo 12).
Diese Zeile verdeutlicht, dass die Monatseingabe einer Modulo-Operation mit 12 unterzogen wird, wodurch der Monatsindex effektiv im Bereich von 0 liegt bis 11.
Daher ist es beim Erstellen eines Datums in JavaScript wichtig, daran zu denken, dass Monate nullindiziert sind, um Verwirrung oder unerwartete Ergebnisse zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum gibt der Datumskonstruktor von JavaScript den Oktober zurück, wenn ich 9 für den Monat angebe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!