Date() Konstruktor
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Der Date()
-Konstruktor erstellt Date
-Objekte. Bei einem Funktionsaufruf gibt er einen String zurück, der die aktuelle Zeit darstellt.
Probieren Sie es aus
const date1 = new Date("December 17, 1995 03:24:00");
// Sun Dec 17 1995 03:24:00 GMT...
const date2 = new Date("1995-12-17T03:24:00");
// Sun Dec 17 1995 03:24:00 GMT...
console.log(date1.getTime() === date2.getTime());
// Expected output: true
Syntax
new Date()
new Date(value)
new Date(dateString)
new Date(dateObject)
new Date(year, monthIndex)
new Date(year, monthIndex, day)
new Date(year, monthIndex, day, hours)
new Date(year, monthIndex, day, hours, minutes)
new Date(year, monthIndex, day, hours, minutes, seconds)
new Date(year, monthIndex, day, hours, minutes, seconds, milliseconds)
Date()
Hinweis:
Date()
kann mit oder ohne new
aufgerufen werden, hat aber unterschiedliche Auswirkungen. Siehe Rückgabewert.
Parameter
Es gibt fünf grundlegende Formen für den Date()
-Konstruktor:
Keine Parameter
Wenn keine Parameter angegeben werden, repräsentiert das neu erstellte Date
-Objekt das aktuelle Datum und die Uhrzeit zum Zeitpunkt der Instanzierung. Der zurückgegebene Timestamp entspricht der Zahl, die von Date.now()
zurückgegeben wird.
Zeitwert oder Zeitstempelnummer
value
-
Ein ganzzahliger Wert, der den Timestamp repräsentiert (die Anzahl der Millisekunden seit Mitternacht zu Beginn des 1. Januar 1970, UTC — auch bekannt als Epoche).
Datum-String
dateString
-
Ein String-Wert, der ein Datum repräsentiert und mit dem gleichen Algorithmus wie von
Date.parse()
interpretiert wird. Siehe Datum-Zeit-String-Format für Hinweise zur Verwendung verschiedener Formate.
Date-Objekt
dateObject
-
Ein vorhandenes
Date
-Objekt. Dies erstellt effektiv eine Kopie des bestehendenDate
-Objekts mit dem gleichen Datum und der gleichen Uhrzeit. Dies entsprichtnew Date(dateObject.valueOf())
, jedoch wird die MethodevalueOf()
nicht aufgerufen.
Wenn ein Parameter an den Date()
-Konstruktor übergeben wird, werden Date
-Instanzen speziell behandelt. Alle anderen Werte werden in Primitive konvertiert. Wenn das Ergebnis ein String ist, wird er als Datum-String geparst. Andernfalls wird das resultierende Primitive weiter in eine Zahl umgewandelt und als Zeitstempel behandelt.
Einzelne Werte für Datum- und Zeitkomponenten
Wenn mindestens ein Jahr und ein Monat angegeben sind, gibt diese Form von Date()
ein Date
-Objekt zurück, dessen Komponentenwerte (Jahr, Monat, Tag, Stunde, Minute, Sekunde und Millisekunde) alle aus den folgenden Parametern stammen. Fehlende Felder erhalten den niedrigstmöglichen Wert (1
für Tag
und 0
für jede andere Komponente). Die Parameterwerte werden alle gegen die lokale Zeitzone evaluiert, anstatt gegen UTC. Date.UTC()
akzeptiert ähnliche Parameter, interpretiert die Komponenten jedoch als UTC und gibt einen Zeitstempel zurück.
Wenn ein Parameter seine definierten Grenzen überschreitet, wird er "übertragen". Beispielsweise wird ein monthIndex
größer als 11
das Jahr erhöhen; wenn ein minutes
größer als 59
übergeben wird, erhöhen sich die hours
entsprechend usw. Daher gibt new Date(1990, 12, 1)
den 1. Januar 1991 zurück; new Date(2020, 5, 19, 25, 65)
gibt 2:05 Uhr am 20. Juni 2020 zurück.
Ebenso wird, wenn ein Parameter unterläuft, von den höheren Positionen "geliehen". Beispielsweise gibt new Date(2020, 5, 0)
den 31. Mai 2020 zurück.
year
-
Ganzzahliger Wert, der das Jahr darstellt. Werte von
0
bis99
werden den Jahren1900
bis1999
zugeordnet. Alle anderen Werte sind die tatsächlichen Jahre. Siehe das Beispiel. monthIndex
-
Ganzzahliger Wert, der den Monat darstellt, beginnend mit
0
für Januar bis11
für Dezember. day
Optional-
Ganzzahliger Wert, der den Tag des Monats darstellt. Standardwert ist
1
. hours
Optional-
Ganzzahliger Wert zwischen
0
und23
, der die Stunde des Tages darstellt. Standardwert ist0
. minutes
Optional-
Ganzzahliger Wert, der das Minuten-Segment einer Zeit darstellt. Standardwert ist
0
. seconds
Optional-
Ganzzahliger Wert, der das Sekunden-Segment einer Zeit darstellt. Standardwert ist
0
. milliseconds
Optional-
Ganzzahliger Wert, der das Millisekunden-Segment einer Zeit darstellt. Standardwert ist
0
.
Rückgabewert
Der Aufruf von new Date()
(der Date()
-Konstruktor) gibt ein Date
Objekt zurück. Wenn er mit einem ungültigen Datum-String aufgerufen wird oder wenn das zu konstruierende Datum einen Zeitstempel kleiner als -8,640,000,000,000,000
oder größer als 8,640,000,000,000,000
Millisekunden hat, gibt er ein ungültiges Datum zurück (ein Date
-Objekt, dessen toString()
Methode "Invalid Date"
zurückgibt und dessen valueOf()
Methode NaN
zurückgibt).
Der Aufruf der Date()
-Funktion (ohne das new
Schlüsselwort) gibt eine String-Darstellung des aktuellen Datums und der aktuellen Zeit zurück, genau wie new Date().toString()
. Alle Argumente, die in einem Date()
-Funktionsaufruf übergeben werden (ohne das new
Schlüsselwort), werden ignoriert; unabhängig davon, ob es mit einem ungültigen Datum-String oder sogar mit einem beliebigen Objekt oder anderen Primitiven als Argument aufgerufen wird - es gibt immer eine String-Darstellung des aktuellen Datums und der aktuellen Zeit zurück.
Beschreibung
Reduzierte Zeitpräzision
Um Schutz gegen Timing-Angriffe und Fingerabdrücke zu bieten, kann die Präzision von new Date()
je nach Browsereinstellungen gerundet werden. In Firefox ist die privacy.reduceTimerPrecision
-Einstellung standardmäßig aktiviert und auf 2ms voreingestellt. Sie können auch privacy.resistFingerprinting
aktivieren, in welchem Fall die Präzision 100ms oder der Wert von privacy.resistFingerprinting.reduceTimerPrecision.microseconds
, welcher auch immer größer ist, beträgt.
Zum Beispiel wird mit reduzierter Zeitpräzision das Ergebnis von new Date().getTime()
immer ein Vielfaches von 2 sein, oder ein Vielfaches von 100 (oder privacy.resistFingerprinting.reduceTimerPrecision.microseconds
) mit aktiviertem privacy.resistFingerprinting
.
// reduced time precision (2ms) in Firefox 60
new Date().getTime();
// Might be:
// 1519211809934
// 1519211810362
// 1519211811670
// …
// reduced time precision with `privacy.resistFingerprinting` enabled
new Date().getTime();
// Might be:
// 1519129853500
// 1519129858900
// 1519129864400
// …
Beispiele
Mehrere Möglichkeiten, ein Date-Objekt zu erstellen
Die folgenden Beispiele zeigen mehrere Möglichkeiten, JavaScript-Daten zu erstellen:
const today = new Date();
const birthday = new Date("December 17, 1995 03:24:00"); // DISCOURAGED: may not work in all runtimes
const birthday = new Date("1995-12-17T03:24:00"); // This is standardized and will work reliably
const birthday = new Date(1995, 11, 17); // the month is 0-indexed
const birthday = new Date(1995, 11, 17, 3, 24, 0);
const birthday = new Date(628021800000); // passing epoch timestamp
Übergabe eines Wertes, der kein Date, kein String und keine Zahl ist
Wenn der Date()
-Konstruktor mit einem Parameter aufgerufen wird, der keine Date
-Instanz ist, wird er in ein Primärwert gezwungen und dann überprüft, ob er ein String ist. Zum Beispiel ist new Date(undefined)
anders als new Date()
:
console.log(new Date(undefined)); // Invalid Date
Dies liegt daran, dass undefined
bereits ein Primärwert ist, aber kein String, also wird es in eine Zahl umgewandelt, die NaN
ist und daher kein gültiger Zeitstempel. Andererseits wird null
in 0
umgewandelt.
console.log(new Date(null)); // 1970-01-01T00:00:00.000Z
Arrays würden in einen String via Array.prototype.toString()
umgewandelt, der die Elemente mit Kommas verbindet. Allerdings ist der resultierende String für jedes Array mit mehr als einem Element kein gültiger ISO 8601 Datum-String, sodass sein Parsing-Verhalten implementationsabhängig wäre. Übergeben Sie keine Arrays an den Date()
-Konstruktor.
console.log(new Date(["2020-06-19", "17:13"]));
// 2020-06-19T17:13:00.000Z in Chrome, since it recognizes "2020-06-19,17:13"
// "Invalid Date" in Firefox
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-date-constructor |