Date

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.

* Some parts of this feature may have varying levels of support.

JavaScript Date Objekte repräsentieren einen bestimmten Moment in der Zeit in einem plattformunabhängigen Format. Date-Objekte kapseln eine ganze Zahl, die die Millisekunden seit Mitternacht am 1. Januar 1970, UTC (der Epoch) darstellt.

Hinweis: Mit der Einführung der Temporal API wird das Date-Objekt als veraltetes Feature betrachtet. Erwägen Sie, Temporal für neuen Code zu verwenden und vorhandenen Code darauf zu migrieren, wenn möglich (siehe die Browser-Kompatibilität). Wir werden bald einen Nutzungsleitfaden verfassen!

Beschreibung

Die Epoche, Zeitstempel und ungültige Datumsangaben

Ein JavaScript-Datum wird grundsätzlich als die Zeit in Millisekunden seit der Epoche angegeben, die als Mitternacht am 1. Januar 1970, UTC (gleichwertig der UNIX-Epoche) definiert ist. Dieser Zeitstempel ist zeitzonen-unabhängig und definiert einen einzigartigen Moment in der Geschichte.

Hinweis: Während der Zeitwert im Herzen eines Date-Objekts UTC ist, arbeiten die grundlegenden Methoden zum Abrufen des Datums und der Uhrzeit oder ihrer Komponenten alle in der lokalen (d.h. der Zeitzone und dem Offset des Hostsystems).

Der maximale Zeitstempel, der durch ein Date-Objekt darstellbar ist, ist etwas kleiner als die maximale sichere Ganzzahl (Number.MAX_SAFE_INTEGER, was 9,007,199,254,740,991 ist). Ein Date-Objekt kann maximal ±8,640,000,000,000,000 Millisekunden oder ±100,000,000 (einhundert Millionen) Tage relativ zur Epoche repräsentieren. Dies ist der Bereich vom 20. April 271821 v. Chr. bis zum 13. September 275760 n. Chr. Jeder Versuch, eine Zeit außerhalb dieses Bereichs darzustellen, führt dazu, dass das Date-Objekt einen Zeitstempelwert von NaN hält, was ein "Ungültiges Datum" ist.

js
console.log(new Date(8.64e15).toString()); // "Sat Sep 13 275760 00:00:00 GMT+0000 (Coordinated Universal Time)"
console.log(new Date(8.64e15 + 1).toString()); // "Invalid Date"

Es gibt verschiedene Methoden, die es Ihnen ermöglichen, mit dem im Datum gespeicherten Zeitstempel zu interagieren:

  • Sie können direkt mit dem Zeitstempelwert interagieren, indem Sie die Methoden getTime() und setTime() verwenden.
  • Die Methoden valueOf() und [Symbol.toPrimitive]() (wenn "number" übergeben wird) — die automatisch bei number coercion aufgerufen werden — geben den Zeitstempel zurück, wodurch Date-Objekte sich wie ihre Zeitstempel verhalten, wenn sie in Zahlkontexten verwendet werden.
  • Alle statischen Methoden (Date.now(), Date.parse(), und Date.UTC()) geben Zeitstempel anstelle von Date-Objekten zurück.
  • Der Date()-Konstruktor kann mit einem Zeitstempel als einzigem Argument aufgerufen werden.

Datumskomponenten und Zeitzonen

Ein Datum wird intern als eine einzige Zahl, der Zeitstempel, dargestellt. Bei der Interaktion mit ihm muss der Zeitstempel als strukturierte Datum-Uhrzeit-Darstellung interpretiert werden. Es gibt immer zwei Möglichkeiten, einen Zeitstempel zu interpretieren: als eine lokale Zeit oder als Coordinated Universal Time (UTC), die global standardisierte Zeit, die durch den World Time Standard definiert ist. Die lokale Zeitzone wird nicht im Date-Objekt gespeichert, sondern vom Host-Umfeld (Benutzergerät) bestimmt.

Hinweis: UTC sollte nicht mit der Greenwich Mean Time (GMT) verwechselt werden, da sie nicht immer gleich sind — dies wird im verlinkten Wikipedia-Artikel ausführlicher erklärt.

Zum Beispiel repräsentiert der Zeitstempel 0 einen einzigartigen Moment in der Geschichte, kann aber auf zwei Arten interpretiert werden:

  • Als UTC-Zeit ist es Mitternacht am Beginn des 1. Januar 1970, UTC,
  • Als lokale Zeit in New York (UTC-5) ist es 19:00:00 Uhr am 31. Dezember 1969.

Die Methode getTimezoneOffset() gibt die Differenz zwischen UTC und der lokalen Zeit in Minuten zurück. Beachten Sie, dass der Zeitzonen-Offset nicht nur von der aktuellen Zeitzone, sondern auch von der durch das Date-Objekt repräsentierten Zeit abhängt, aufgrund der Sommerzeitumstellung und historischer Änderungen. Im Wesentlichen ist der Zeitzonen-Offset die Differenz zur UTC-Zeit, zur Zeit, die durch das Date-Objekt repräsentiert wird, und am Standort des Host-Umfelds.

Es gibt zwei Gruppen von Date-Methoden: Eine Gruppe holt und setzt verschiedene Datumskomponenten, indem der Zeitstempel als lokale Zeit interpretiert wird, während die andere UTC verwendet.

Komponente Lokal UTC
Holen Setzen Holen Setzen
Jahr getFullYear() setFullYear() getUTCFullYear() setUTCFullYear()
Monat getMonth() setMonth() getUTCMonth() setUTCMonth()
Datum (des Monats) getDate() setDate() getUTCDate() setUTCDate()
Stunden getHours() setHours() getUTCHours() setUTCHours()
Minuten getMinutes() setMinutes() getUTCMinutes() setUTCMinutes()
Sekunden getSeconds() setSeconds() getUTCSeconds() setUTCSeconds()
Millisekunden getMilliseconds() setMilliseconds() getUTCMilliseconds() setUTCMilliseconds()
Tag (der Woche) getDay() Nicht zutreffend getUTCDay() Nicht zutreffend

Der Date()-Konstruktor kann mit zwei oder mehr Argumenten aufgerufen werden, in welchem Fall sie als Jahr, Monat, Tag, Stunde, Minute, Sekunde und Millisekunde in lokaler Zeit interpretiert werden. Date.UTC() funktioniert ähnlich, interpretiert die Komponenten jedoch als UTC-Zeit und akzeptiert auch ein einziges Argument, das das Jahr darstellt.

Hinweis: Einige Methoden, einschließlich des Date()-Konstruktors, Date.UTC(), und der veralteten getYear()/setYear()-Methoden, interpretieren ein zweistelliges Jahr als ein Jahr in den 1900er Jahren. Zum Beispiel wird new Date(99, 5, 24) als 24. Juni 1999 interpretiert, nicht als 24. Juni 99. Siehe Interpretation von zweistelligen Jahren für weitere Informationen.

Wenn ein Segment seinen erwarteten Bereich über- oder unterschreitet, "trägt" es normalerweise zum höheren Segment hinzu oder leiht sich davon. Zum Beispiel, wenn der Monat auf 12 gesetzt wird (Monate beginnen bei null, also ist Dezember 11), wird es zum Januar des nächsten Jahres. Wenn der Tag des Monats auf 0 gesetzt wird, wird es zum letzten Tag des vorherigen Monats. Dies gilt auch für Daten, die mit dem Datums-Zeit-Format festgelegt werden.

Datums-Zeit-Format

Es gibt viele Möglichkeiten, ein Datum als Zeichenfolge zu formatieren. Die JavaScript-Spezifikation legt nur ein Format fest, das universell unterstützt werden muss: das Datums-Zeit-Format, eine Vereinfachung des ISO 8601-Kalenderdatums im erweiterten Format. Das Format ist wie folgt:

YYYY-MM-DDTHH:mm:ss.sssZ
  • YYYY ist das Jahr, mit vier Ziffern (0000 bis 9999), oder als erweitertes Jahr mit + oder - gefolgt von sechs Ziffern. Das Vorzeichen ist bei erweiterten Jahren erforderlich. -000000 ist ausdrücklich als gültiges Jahr ausgeschlossen.
  • MM ist der Monat, mit zwei Ziffern (01 bis 12). Standardwert ist 01.
  • DD ist der Tag des Monats, mit zwei Ziffern (01 bis 31). Standardwert ist 01.
  • T ist ein buchstäblicher Zeichen, das den Beginn des _Zeit-_Teils der Zeichenfolge anzeigt. Das T ist erforderlich, wenn der Zeitteil angegeben wird.
  • HH ist die Stunde, mit zwei Ziffern (00 bis 23). Als Sonderfall ist 24:00:00 erlaubt und wird als Mitternacht am Beginn des nächsten Tages interpretiert. Standardwert ist 00.
  • mm ist die Minute, mit zwei Ziffern (00 bis 59). Standardwert ist 00.
  • ss ist die Sekunde, mit zwei Ziffern (00 bis 59). Standardwert ist 00.
  • sss ist die Millisekunde, mit drei Ziffern (000 bis 999). Standardwert ist 000.
  • Z ist der Zeitzonenversatz, der entweder das buchstäbliche Zeichen Z sein kann (was UTC anzeigt), oder + oder - gefolgt von HH:mm, dem Versatz in Stunden und Minuten von UTC.

Verschiedene Komponenten können ausgelassen werden, sodass die folgenden alle gültig sind:

  • Nur-Datum-Form: YYYY, YYYY-MM, YYYY-MM-DD
  • Datum-Uhrzeit-Form: eine der oben genannten Nur-Datum-Formen, gefolgt von T, gefolgt von HH:mm, HH:mm:ss oder HH:mm:ss.sss. Jede Kombination kann mit einem Zeitzonenoffset abgeschlossen werden.

Zum Beispiel sind "2011-10-10" (Nur-Datum-Form), "2011-10-10T14:48:00" (Datum-Uhrzeit-Form) oder "2011-10-10T14:48:00.000+09:00" (Datum-Uhrzeit-Form mit Millisekunden und Zeitzone) alle gültige Datums-Zeit-Zeichenfolgen.

Wenn der Zeitzonenversatz fehlt, werden Nur-Datum-Formen als UTC-Zeit und Datum-Uhrzeit-Formen als lokale Zeit interpretiert. Die Interpretation als UTC-Zeit ist auf einen historischen Spezifikationsfehler zurückzuführen, der nicht mit ISO 8601 konsistent war, aber aufgrund der Web-Kompatibilität nicht geändert werden konnte. Siehe Defekter Parser – Ein Web-Realitätsproblem.

Date.parse() und der Date()-Konstruktor akzeptieren beide Zeichenfolgen im Datums-Zeit-Zeichenfolgenformat als Eingabe. Darüber hinaus ist es Implementierungen erlaubt, andere Datumsformate zu unterstützen, wenn die Eingabe diesem Format nicht entspricht.

Die Methode toISOString() gibt eine Zeichenfolgenrepräsentation des Datums im Datums-Zeit-Zeichenfolgenformat zurück, wobei der Zeitzonenversatz immer auf Z (UTC) gesetzt ist.

Hinweis: Es wird empfohlen, sicherzustellen, dass Ihre Eingabe dem oben stehenden Datums-Zeit-Zeichenfolgenformat für maximale Kompatibilität entspricht, da die Unterstützung für andere Formate nicht garantiert ist. Es gibt jedoch einige Formate, die von allen großen Implementierungen unterstützt werden — wie das RFC 2822-Format — in welchem Fall deren Verwendung akzeptabel sein kann. Führen Sie immer Cross-Browser-Tests durch, um sicherzustellen, dass Ihr Code in allen Zielbrowsern funktioniert. Eine Bibliothek kann helfen, wenn viele verschiedene Formate unterstützt werden sollen.

Nicht-standardisierte Zeichenfolgen können beliebig von der Implementierung geparst werden, einschließlich der Zeitzone — die meisten Implementierungen verwenden standardmäßig die lokale Zeitzone. Implementierungen sind nicht verpflichtet, ein ungültiges Datum für außer Betrag liegende Datumskomponenten zurückzugeben, obwohl sie dies normalerweise tun. Eine Zeichenfolge kann innerhalb der oben definierten Datumskomponenten liegen, repräsentiert aber nicht wirklich ein Datum (zum Beispiel "30. Februar"). Implementierungen verhalten sich in diesem Fall inkonsistent. Die Seite Date.parse() bietet weitere Beispiele zu diesen nicht-standardisierten Fällen.

Andere Möglichkeiten, ein Datum zu formatieren

  • toISOString() gibt eine Zeichenfolge im Format 1970-01-01T00:00:00.000Z zurück (das oben eingeführte Datums-Zeit-Zeichenfolgenformat, das ein vereinfachtes ISO 8601 ist). toJSON() ruft toISOString() auf und gibt das Ergebnis zurück.
  • toString() gibt eine Zeichenfolge im Format Thu Jan 01 1970 00:00:00 GMT+0000 (Coordinated Universal Time) zurück, während toDateString() und toTimeString() jeweils das Datums- und Uhrzeit-Teilstück der Zeichenfolge zurückgeben. [Symbol.toPrimitive]() (wenn "string" oder "default" übergeben wird) ruft toString() auf und gibt das Ergebnis zurück.
  • toUTCString() gibt eine Zeichenfolge im Format Thu, 01 Jan 1970 00:00:00 GMT (verallgemeinertes RFC 7231) zurück.
  • toLocaleDateString(), toLocaleTimeString(), und toLocaleString() verwenden gebietsabhängige Datums- und Uhrzeitformate, die normalerweise von der Intl API bereitgestellt werden.

Siehe den Abschnitt Formate der toString-Methoden-Rückgabewerte für Beispiele.

Konstruktor

Date()

Wenn als Konstruktor aufgerufen, gibt es ein neues Date-Objekt zurück. Wenn als Funktion aufgerufen, gibt es eine Zeichenfolgenrepräsentation des aktuellen Datums und der Uhrzeit zurück.

Statische Methoden

Date.now()

Gibt den numerischen Wert zurück, der der aktuellen Zeit entspricht—die Anzahl der Millisekunden seit dem 1. Januar 1970 00:00:00 UTC, ohne Berücksichtigung von Schaltsekunden.

Date.parse()

Parst eine Zeichenfolgenrepräsentation eines Datums und gibt die Anzahl der Millisekunden seit dem 1. Januar 1970 00:00:00 UTC zurück, ohne Berücksichtigung von Schaltsekunden.

Date.UTC()

Akzeptiert die gleichen Parameter wie die längste Form des Konstruktors (d.h. 2 bis 7) und gibt die Anzahl der Millisekunden seit dem 1. Januar 1970 00:00:00 UTC zurück, ohne Berücksichtigung von Schaltsekunden.

Instanzeigenschaften

Diese Eigenschaften sind auf Date.prototype definiert und werden von allen Date-Instanzen geteilt.

Date.prototype.constructor

Die Konstrukturfunktion, die das Instanzobjekt erstellt hat. Für Date-Instanzen ist der Initialwert der Date-Konstruktor.

Instanzmethoden

Date.prototype.getDate()

Gibt den Tag des Monats (131) für das angegebene Datum gemäß lokaler Zeit zurück.

Date.prototype.getDay()

Gibt den Wochentag (06) für das angegebene Datum gemäß lokaler Zeit zurück.

Date.prototype.getFullYear()

Gibt das Jahr (4 Ziffern für 4-stellige Jahre) des angegebenen Datums gemäß lokaler Zeit zurück.

Date.prototype.getHours()

Gibt die Stunde (023) im angegebenen Datum gemäß lokaler Zeit zurück.

Date.prototype.getMilliseconds()

Gibt die Millisekunden (0999) im angegebenen Datum gemäß lokaler Zeit zurück.

Date.prototype.getMinutes()

Gibt die Minuten (059) im angegebenen Datum gemäß lokaler Zeit zurück.

Date.prototype.getMonth()

Gibt den Monat (011) im angegebenen Datum gemäß lokaler Zeit zurück.

Date.prototype.getSeconds()

Gibt die Sekunden (059) im angegebenen Datum gemäß lokaler Zeit zurück.

Date.prototype.getTime()

Gibt den numerischen Wert des angegebenen Datums als die Anzahl der Millisekunden seit dem 1. Januar 1970 00:00:00 UTC zurück. (Negative Werte werden für frühere Zeiten zurückgegeben.)

Date.prototype.getTimezoneOffset()

Gibt den Zeitzonen-Offset in Minuten für den aktuellen Ort zurück.

Date.prototype.getUTCDate()

Gibt den Tag (Datum) des Monats (131) im angegebenen Datum gemäß der Weltzeit zurück.

Date.prototype.getUTCDay()

Gibt den Wochentag (06) im angegebenen Datum gemäß der Weltzeit zurück.

Date.prototype.getUTCFullYear()

Gibt das Jahr (4 Ziffern für 4-stellige Jahre) im angegebenen Datum gemäß der Weltzeit zurück.

Date.prototype.getUTCHours()

Gibt die Stunden (023) im angegebenen Datum gemäß der Weltzeit zurück.

Date.prototype.getUTCMilliseconds()

Gibt die Millisekunden (0999) im angegebenen Datum gemäß der Weltzeit zurück.

Date.prototype.getUTCMinutes()

Gibt die Minuten (059) im angegebenen Datum gemäß der Weltzeit zurück.

Date.prototype.getUTCMonth()

Gibt den Monat (011) im angegebenen Datum gemäß der Weltzeit zurück.

Date.prototype.getUTCSeconds()

Gibt die Sekunden (059) im angegebenen Datum gemäß der Weltzeit zurück.

Date.prototype.getYear() Veraltet

Gibt das Jahr (gewöhnlich 2–3 Ziffern) im angegebenen Datum gemäß lokaler Zeit zurück. Verwenden Sie getFullYear() stattdessen.

Date.prototype.setDate()

Legt den Tag des Monats für ein angegebenes Datum gemäß lokaler Zeit fest.

Date.prototype.setFullYear()

Legt das volle Jahr (z. B. 4 Ziffern für 4-stellige Jahre) für ein angegebenes Datum gemäß lokaler Zeit fest.

Date.prototype.setHours()

Legt die Stunden für ein angegebenes Datum gemäß lokaler Zeit fest.

Date.prototype.setMilliseconds()

Legt die Millisekunden für ein angegebenes Datum gemäß lokaler Zeit fest.

Date.prototype.setMinutes()

Legt die Minuten für ein angegebenes Datum gemäß lokaler Zeit fest.

Date.prototype.setMonth()

Legt den Monat für ein angegebenes Datum gemäß lokaler Zeit fest.

Date.prototype.setSeconds()

Legt die Sekunden für ein angegebenes Datum gemäß lokaler Zeit fest.

Date.prototype.setTime()

Setzt das Date-Objekt auf die durch die Anzahl der Millisekunden seit dem 1. Januar 1970 00:00:00 UTC repräsentierte Zeit. Verwenden Sie negative Zahlen für frühere Zeiten.

Date.prototype.setUTCDate()

Legt den Tag des Monats für ein angegebenes Datum gemäß der Weltzeit fest.

Date.prototype.setUTCFullYear()

Legt das volle Jahr (z. B. 4 Ziffern für 4-stellige Jahre) für ein angegebenes Datum gemäß der Weltzeit fest.

Date.prototype.setUTCHours()

Legt die Stunde für ein angegebenes Datum gemäß der Weltzeit fest.

Date.prototype.setUTCMilliseconds()

Legt die Millisekunden für ein angegebenes Datum gemäß der Weltzeit fest.

Date.prototype.setUTCMinutes()

Legt die Minuten für ein angegebenes Datum gemäß der Weltzeit fest.

Date.prototype.setUTCMonth()

Legt den Monat für ein angegebenes Datum gemäß der Weltzeit fest.

Date.prototype.setUTCSeconds()

Legt die Sekunden für ein angegebenes Datum gemäß der Weltzeit fest.

Date.prototype.setYear() Veraltet

Legt das Jahr (gewöhnlich 2–3 Ziffern) für ein angegebenes Datum gemäß lokaler Zeit fest. Verwenden Sie setFullYear() stattdessen.

Date.prototype.toDateString()

Gibt den "Datum"-Teil des Date als menschenlesbare Zeichenfolge wie 'Thu Apr 12 2018' zurück.

Date.prototype.toISOString()

Konvertiert ein Datum in eine Zeichenfolge im erweiterten ISO 8601-Format.

Date.prototype.toJSON()

Gibt eine Zeichenfolge zurück, die das Date mit Hilfe von toISOString() darstellt. Soll implizit von JSON.stringify() aufgerufen werden.

Date.prototype.toLocaleDateString()

Gibt eine Zeichenfolge mit einer ortsempfindlichen Darstellung des Datumsabschnitts dieses Datums basierend auf den Systemeinstellungen zurück.

Date.prototype.toLocaleString()

Gibt eine Zeichenfolge mit einer ortsempfindlichen Darstellung dieses Datums zurück. Überschreibt die Methode Object.prototype.toLocaleString().

Date.prototype.toLocaleTimeString()

Gibt eine Zeichenfolge mit einer ortsempfindlichen Darstellung des Zeitabschnitts dieses Datums, basierend auf den Systemeinstellungen, zurück.

Date.prototype.toString()

Gibt eine Zeichenfolge zurück, die das angegebene Date-Objekt darstellt. Überschreibt die Methode Object.prototype.toString().

Date.prototype.toTemporalInstant() Experimentell

Gibt ein neues Temporal.Instant-Objekt mit dem gleichen epochMilliseconds-Wert wie dieser Datumszeitstempel zurück.

Date.prototype.toTimeString()

Gibt den "Zeit"-Teil des Date als menschenlesbare Zeichenfolge zurück.

Date.prototype.toUTCString()

Konvertiert ein Datum in eine Zeichenfolge unter Verwendung der UTC-Zeitzone.

Date.prototype.valueOf()

Gibt den primitiven Wert eines Date-Objekts zurück. Überschreibt die Methode Object.prototype.valueOf().

Date.prototype[Symbol.toPrimitive]()

Konvertiert dieses Date-Objekt in einen primitiven Wert.

Beispiele

Mehrere Möglichkeiten, ein Date-Objekt zu erstellen

Die folgenden Beispiele zeigen verschiedene Möglichkeiten auf, JavaScript-Daten zu erstellen:

Hinweis: Ein Datum aus einer Zeichenfolge zu erstellen, hat viele Verhaltensinkonsistenzen. Siehe Datums-Zeit-Format für Risiken bei der Verwendung unterschiedlicher Formate.

js
const today = new Date();
const birthday = new Date("December 17, 1995 03:24:00"); // DISCOURAGED: may not work in all runtimes
const birthday2 = new Date("1995-12-17T03:24:00"); // This is standardized and will work reliably
const birthday3 = new Date(1995, 11, 17); // the month is 0-indexed
const birthday4 = new Date(1995, 11, 17, 3, 24, 0);
const birthday5 = new Date(628021800000); // passing epoch timestamp

Formate der toString-Methoden-Rückgabewerte

js
const date = new Date("2020-05-12T23:50:21.817Z");
date.toString(); // Tue May 12 2020 18:50:21 GMT-0500 (Central Daylight Time)
date.toDateString(); // Tue May 12 2020
date.toTimeString(); // 18:50:21 GMT-0500 (Central Daylight Time)
date[Symbol.toPrimitive]("string"); // Tue May 12 2020 18:50:21 GMT-0500 (Central Daylight Time)

date.toISOString(); // 2020-05-12T23:50:21.817Z
date.toJSON(); // 2020-05-12T23:50:21.817Z

date.toUTCString(); // Tue, 12 May 2020 23:50:21 GMT

date.toLocaleString(); // 5/12/2020, 6:50:21 PM
date.toLocaleDateString(); // 5/12/2020
date.toLocaleTimeString(); // 6:50:21 PM

Um Datum, Monat und Jahr oder Zeit zu erhalten

js
const date = new Date("2000-01-17T16:45:30");
const [month, day, year] = [
  date.getMonth(),
  date.getDate(),
  date.getFullYear(),
];
// [0, 17, 2000] as month are 0-indexed
const [hour, minutes, seconds] = [
  date.getHours(),
  date.getMinutes(),
  date.getSeconds(),
];
// [16, 45, 30]

Interpretation zweistelliger Jahre

new Date() zeigt ein unerwünschtes, inkonsistentes Verhalten mit zweistelligen Jahreswerten; insbesondere, wenn einem new Date()-Aufruf ein zweistelliger Jahreswert übergeben wird, wird dieser Jahreswert nicht als wörtliches Jahr behandelt und direkt verwendet, sondern als relativer Offset interpretiert — in einigen Fällen als ein Offset vom Jahr 1900, in anderen Fällen als ein Offset vom Jahr 2000.

js
let date = new Date(98, 1); // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)
date = new Date(22, 1); // Wed Feb 01 1922 00:00:00 GMT+0000 (GMT)
date = new Date("2/1/22"); // Tue Feb 01 2022 00:00:00 GMT+0000 (GMT)

// Legacy method; always interprets two-digit year values as relative to 1900
date.setYear(98);
date.toString(); // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)
date.setYear(22);
date.toString(); // Wed Feb 01 1922 00:00:00 GMT+0000 (GMT)

Um also Daten zwischen den Jahren 0 und 99 zu erzeugen und zu erhalten, verwenden Sie stattdessen die bevorzugten Methoden setFullYear() und getFullYear():.

js
// Preferred method; never interprets any value as being a relative offset,
// but instead uses the year value as-is
date.setFullYear(98);
date.getFullYear(); // 98 (not 1998)
date.setFullYear(22);
date.getFullYear(); // 22 (not 1922, not 2022)

Berechnung der verstrichenen Zeit

Die folgenden Beispiele zeigen, wie die verstrichene Zeit zwischen zwei JavaScript-Daten in Millisekunden bestimmt wird.

Aufgrund der unterschiedlichen Längen von Tagen (aufgrund der Sommerzeitumstellung), Monaten und Jahren erfordert die Angabe der verstrichenen Zeit in Einheiten, die größer sind als Stunden, Minuten und Sekunden, die Berücksichtigung einer Reihe von Problemen, die gründlich erforscht werden sollten, bevor man es versucht.

js
// Using Date objects
const start = Date.now();

// The event to time goes here:
doSomethingForALongTime();
const end = Date.now();
const elapsed = end - start; // elapsed time in milliseconds
js
// Using built-in methods
const start = new Date();

// The event to time goes here:
doSomethingForALongTime();
const end = new Date();
const elapsed = end.getTime() - start.getTime(); // elapsed time in milliseconds
js
// To test a function and get back its return
function printElapsedTime(testFn) {
  const startTime = Date.now();
  const result = testFn();
  const endTime = Date.now();

  console.log(`Elapsed time: ${String(endTime - startTime)} milliseconds`);
  return result;
}

const yourFunctionReturn = printElapsedTime(yourFunction);

Hinweis: In Browsern, die die Performance-API's hochauflösende Zeitfunktion unterstützen, kann Performance.now() zuverlässigere und präzisere Messungen der verstrichenen Zeit bieten als Date.now().

Die Anzahl der Sekunden seit der ECMAScript-Epoche erhalten

js
const seconds = Math.floor(Date.now() / 1000);

In diesem Fall ist es wichtig, nur eine ganze Zahl zurückzugeben — daher reicht eine einfache Division nicht aus. Es ist auch wichtig, nur tatsächlich verstrichene Sekunden zurückzugeben. (Deshalb verwendet dieser Code Math.floor(), und nicht Math.round().)

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-date-objects

Browser-Kompatibilität

Siehe auch