Date.parse()

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.

Die Date.parse() statische Methode verarbeitet eine Zeichenkette, die ein Datum darstellt, und gibt den Zeitstempel des Datums zurück.

Probieren Sie es aus

// Standard date-time string format
const unixTimeZero = Date.parse("1970-01-01T00:00:00Z");
// Non-standard format resembling toUTCString()
const javaScriptRelease = Date.parse("04 Dec 1995 00:12:00 GMT");

console.log(unixTimeZero);
// Expected output: 0

console.log(javaScriptRelease);
// Expected output: 818035920000

Syntax

js
Date.parse(dateString)

Parameter

dateString

Eine Zeichenkette im Datums- und Zeitformat. Weitere Informationen zu den Fallstricken bei der Verwendung unterschiedlicher Formate finden Sie in der verlinkten Referenz.

Rückgabewert

Eine Zahl, die den Zeitstempel des angegebenen Datums darstellt. Wenn dateString nicht als gültiges Datum geparst werden kann, wird NaN zurückgegeben.

Beschreibung

Diese Funktion ist nützlich, um Datumswerte basierend auf Zeichenkettenwerten festzulegen, zum Beispiel in Verbindung mit der setTime() Methode.

Die Formate, die parse() verarbeiten kann, sind nicht explizit angegeben, es gibt jedoch einige Konstanten:

  • Das Datums- und Zeitformat (produziert von toISOString()) muss unterstützt werden.
  • Wenn x ein Date ist, dessen Millisekundenmenge null ist, dann sollte x.valueOf() gleich einem der folgenden sein: Date.parse(x.toString()), Date.parse(x.toUTCString()), Date.parse(x.toISOString()). Dies bedeutet, dass die Formate, die durch toString() und toUTCString() produziert werden, ebenfalls unterstützt werden sollten.
  • Die Spezifikation erfordert nicht die Unterstützung des Formats, das durch toLocaleString() erzeugt wird. Große Engines versuchen jedoch alle, das toLocaleString("en-US") Format zu unterstützen.

Andere Formate sind implementationsspezifisch und funktionieren möglicherweise nicht in allen Browsern. Eine Bibliothek kann helfen, wenn viele unterschiedliche Formate unterstützt werden müssen. Tatsächlich ist die Unzuverlässigkeit von Date.parse() eines der Motive für die Einführung der Temporal API.

Da parse() eine statische Methode von Date ist, wird sie immer als Date.parse() verwendet und nicht als Methode eines erstellten Date Objekts.

Beispiele

Verwendung von Date.parse()

Die folgenden Aufrufe geben alle 1546300800000 zurück. Der erste impliziert UTC-Zeit, da es sich nur um ein Datum handelt, und die anderen spezifizieren explizit die UTC-Zeitzone.

js
Date.parse("2019-01-01");
Date.parse("2019-01-01T00:00:00.000Z");
Date.parse("2019-01-01T00:00:00.000+00:00");

Der folgende Aufruf, der keine Zeitzone angibt, wird auf den 2019-01-01 um 00:00:00 in der lokalen Zeitzone des Systems gesetzt, da er sowohl Datum als auch Uhrzeit enthält.

js
Date.parse("2019-01-01T00:00:00");

toString() und toUTCString() Formate

Neben dem Standard-Datums- und Zeitformat werden die Formate toString() und toUTCString() unterstützt:

js
// toString() format
Date.parse("Thu Jan 01 1970 00:00:00 GMT-0500 (Eastern Standard Time)");
// 18000000 in all implementations in all timezones

// toUTCString() format
Date.parse("Thu, 01 Jan 1970 00:00:00 GMT");
// 0 in all implementations in all timezones

Nicht-standardisierte Datumszeichenketten

Hinweis: Dieser Abschnitt enthält implementationsspezifisches Verhalten, das in verschiedenen Browsern oder unterschiedlichen Browserversionen inkonsistent sein kann. Es soll keine umfassende Tabelle zur Browser-Kompatibilität darstellen, und Sie sollten immer eigene Tests durchführen, bevor Sie ein beliebiges Format in Ihrem Code verwenden.

Implementationen standardmäßig setzen häufig die lokale Zeitzone, wenn die Datumszeichenkette nicht standardisiert ist. Für Konsistenz nehmen wir an, dass die Laufzeit die UTC-Zeitzone verwendet, und sofern nicht anders angegeben, variiert die Ausgabe mit der Zeitzone des Geräts. Die Sommerzeit (DST) der lokalen Zeitzone kann ebenfalls einen Einfluss darauf haben.

Hier sind einige weitere Beispiele für nicht-standardisierte Datumszeichenketten. Browser sind sehr nachsichtig beim Parsen von Datumszeichenketten und können Teile einer Zeichenkette, die sie nicht parsen können, ignorieren. Aus Kompatibilitätsgründen kopieren Browser häufig das Verhalten anderer, sodass sich diese Verarbeitungsmuster über Browser hinweg verbreiten. Wie bereits erwähnt, dienen die folgenden Beispiele nur zur Veranschaulichung und sind keineswegs erschöpfend:

Beschreibung Beispiel Chrome Firefox Safari
Einzelne Zahl 0 (einstellige Zahl) 946684800000 (01. Jan 2000); NaN in Firefox ≤122 -62167219200000 (01. Jan 0000)
31 (zweistellige Zahl) NaN -61188912000000 (01. Jan 0031)
999 (drei-/vierstellige Zahl) -30641733102000 (01. Jan 0999)
Datumszeichenketten mit verschiedenen Trennzeichen 1970-01-01 (Standard) 0 in allen Zeitzonen
1970/01/01 0
1970,01,01 0 NaN
1970 01 01 0 NaN
Zeichenketten, die wie toString() aussehen Thu Jan 01 1970 00:00:00
Thu Jan 01 1970
Jan 01 1970 00:00:00
Jan 01 1970
0
Zeichenketten, die wie toUTCString() aussehen Thu, 01 Jan 1970 00:00:00
Thu, 01 Jan 1970
01 Jan 1970 00:00:00
01 Jan 1970
0
Das erste Datumselement ist 2-stellig 01-02-03 (das erste Segment kann ein gültiger Monat sein) 1041465600000 (02. Jan 2003) -62132745600000 (03. Feb 0001)
Hinweis: Safari nimmt immer JJ-MM-TT an, aber MM/TT/JJ.
27-02-03 (das erste Segment kann ein gültiger Tag, aber kein Monat sein) NaN -61312291200000 (03. Feb 0027)
49-02-03 (das erste Segment kann kein gültiger Tag sein und ist <50) 2495923200000 (03. Feb 2049) -60617980800000 (03. Feb 0049)
50-02-03 (das erste Segment kann kein gültiger Tag sein und ist ≥50) -628300800000 (03. Feb 1950) -60586444800000 (03. Feb 0050)
Datumskomponenten außerhalb der Grenzen 2014-25-23
Mar 32, 2014
2014/25/23
NaN
2014-02-30 1393718400000 (02. Mar 2014) NaN
02/30/2014 1393718400000
Überflüssige Zeichen nach dem Monatsnamen 04 Dec 1995
04 Decem 1995
04 December 1995
818031600000
04 DecFoo 1995 818031600000
Nur die ersten drei Zeichen werden gelesen.
Firefox ≤121 liest bis zum gültigen Monatsnamen und gibt NaN zurück, wenn es "F" sieht.
04 De 1995 NaN

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-date.parse

Browser-Kompatibilität

Siehe auch