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 einzigen Moment in der Zeit in einem plattformunabhängigen Format. Date-Objekte umfassen eine ganze Zahl, die Millisekunden seit Mitternacht zu Beginn des 1. Januar 1970, UTC (der epoch), darstellt.

Hinweis: Mit der Einführung der Temporal-API gilt das Date-Objekt als ein veraltetes Feature. Erwägen Sie, Temporal für neuen Code zu verwenden und bestehenden Code darauf zu migrieren, wenn möglich (überprüfen Sie die Browser-Kompatibilität. Wir schreiben bald einen Nutzungsleitfaden!

Beschreibung

Der Epoch, Zeitstempel und ungültige Datumsangabe

Ein JavaScript-Datum wird grundsätzlich als die Zeit in Millisekunden spezifiziert, die seit dem epoch vergangen ist, welcher als Mitternacht zu Beginn des 1. Januar 1970, UTC (entspricht dem UNIX-Epoch) definiert ist. Dieser Zeitstempel ist zeitzonenneutral und definiert einen einzigartigen Moment in der Geschichte.

Hinweis: Obwohl der Zeitwert im Kern 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. im Hostsyste) Zeitzone und deren Offset.

Der maximal darstellbare Zeitstempel eines Date-Objekts ist etwas kleiner als der maximal sichere Ganzzahlwert (Number.MAX_SAFE_INTEGER, der 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 zum Epoch darstellen. 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 "Invalid Date" 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 Ihnen erlauben, mit dem im Datum gespeicherten Zeitstempel zu interagieren:

  • Sie können direkt mit dem Zeitstempelwert mittels der getTime()- und setTime()-Methoden interagieren.
  • Die valueOf()- und [Symbol.toPrimitive]() (bei Übergabe von "number") Methoden — die automatisch bei der Zahlenerzwung aufgerufen werden — geben den Zeitstempel zurück, wodurch Date-Objekte sich wie ihre Zeitstempel verhalten, wenn sie in numerischen Kontexten verwendet werden.
  • Alle statischen Methoden (Date.now(), Date.parse(), und Date.UTC()) geben Zeitstempel statt 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 dargestellt, der Zeitstempel. Beim Interagieren mit diesem muss der Zeitstempel als eine strukturierte Datums- und Zeit-Darstellung interpretiert werden. Es gibt immer zwei Möglichkeiten, einen Zeitstempel zu interpretieren: als lokale Zeit oder als koordinierte Weltzeit (UTC), die globale Standardzeit gemäß dem Weltzeitstandard. Die lokale Zeitzone wird nicht im Datum-Objekt gespeichert, sondern wird durch die Hostumgebung (Gerät des Benutzers) bestimmt.

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

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

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

Die getTimezoneOffset()-Methode gibt den Unterschied zwischen UTC und der lokalen Zeit in Minuten zurück. Beachten Sie, dass der Zeitzonen-Offset nicht nur von der aktuellen Zeitzone abhängt, sondern auch von der durch das Date-Objekt dargestellten Zeit, aufgrund der Sommerzeit und historischer Änderungen. Im Wesentlichen ist der Zeitzonen-Offset der Offset von UTC-Zeit, zur Zeit, die durch das Date-Objekt dargestellt wird und am Ort der Hostumgebung.

Es gibt zwei Gruppen von Date-Methoden: eine Gruppe ruft verschiedene Datumskomponenten ab und setzt diese, indem sie den Zeitstempel als lokale Zeit interpretiert, während die andere UTC verwendet.

Komponente Lokal UTC
Get Set Get Set
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() N/A getUTCDay() N/A

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

Hinweis: Einige Methoden, einschließlich des Date()-Konstruktors, Date.UTC(), und der veralteten getYear()/setYear() Methodes, 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 überschreitet oder unterschreitet, "überträgt" es sich normalerweise auf oder "leiht" sich vom höheren Segment. Zum Beispiel, wenn der Monat auf 12 gesetzt wird (Monate sind nullbasiert, also ist Dezember 11), wird es der Januar des nächsten Jahres. Wenn der Tag des Monats auf 0 gesetzt wird, wird es der letzte Tag des vorherigen Monats. Dies gilt auch für Daten, die im Datum-Zeit-String-Format spezifiziert sind.

Datum-Zeit-String-Format

Es gibt viele Möglichkeiten, ein Datum als String zu formatieren. Die JavaScript-Spezifikation spezifiziert nur ein Format, das universell unterstützt werden soll: das Datum-Zeit-String-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 ein erweitertes Jahr mit + oder - gefolgt von sechs Ziffern. Das Vorzeichen ist für erweiterte Jahre erforderlich. -000000 ist ausdrücklich als gültiges Jahr ausgeschlossen.
  • MM ist der Monat, mit zwei Ziffern (01 bis 12). Standardmäßig 01.
  • DD ist der Tag des Monats, mit zwei Ziffern (01 bis 31). Standardmäßig 01.
  • T ist ein literales Zeichen, das den Beginn des Zeit-Teils des Strings 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 zu Beginn des nächsten Tages interpretiert. Standardmäßig 00.
  • mm ist die Minute, mit zwei Ziffern (00 bis 59). Standardmäßig 00.
  • ss ist die Sekunde, mit zwei Ziffern (00 bis 59). Standardmäßig 00.
  • sss ist die Millisekunde, mit drei Ziffern (000 bis 999). Standardmäßig 000.
  • Z ist der Zeitzonenoffset, der entweder das literale Zeichen Z (anzeigend UTC), oder + oder - gefolgt von HH:mm, dem Offset in Stunden und Minuten von UTC.

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

  • Nur-Daten-Form: YYYY, YYYY-MM, YYYY-MM-DD
  • Datum-Zeit-Form: eine der obigen Nur-Daten-Formen, gefolgt von T, gefolgt von HH:mm, HH:mm:ss, oder HH:mm:ss.sss. Jede Kombination kann von einem Zeitzonenoffset gefolgt werden.

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

Wenn der Zeitzonenoffset fehlt, werden Datum-only-Formulare als UTC-Zeit und Datum-Zeit-Formen als lokale Zeit interpretiert. Die Interpretation als UTC-Zeit ist auf einen historischen Spezifikationsfehler zurückzuführen, der nicht mit ISO 8601 übereinstimmte, aber nicht geändert werden konnte aufgrund von Web-Kompatibilität. Siehe Broken Parser – A Web Reality Issue.

Date.parse() und der Date()-Konstruktor akzeptieren beide Strings im Datum-Zeit-String-Format als Eingabe. Darüber hinaus dürfen Implementierungen andere Datumsformate unterstützen, wenn die Eingabe dieses Format nicht entspricht.

Die Methode toISOString() gibt eine String-Repräsentation des Datums im Datum-Zeit-String-Format zurück, wobei der Zeitzonenoffset immer auf Z (UTC) gesetzt ist.

Hinweis: Es wird empfohlen sicherzustellen, dass Ihre Eingabe dem obigen Datum-Zeit-String-Format entspricht, um maximale Kompatibilität zu gewährleisten, da die Unterstützung anderer Formate nicht garantiert ist. Es gibt jedoch einige Formate, die in allen wichtigen Implementierungen unterstützt werden — wie das RFC 2822-Format — in welchem Fall ihre 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 untergebracht werden sollen.

Nicht-standardmäßige Strings können auf jede gewünschte Weise durch die Implementierung analysiert werden, einschließlich der Zeitzone — die meisten Implementierungen verwenden die lokale Zeitzone standardmäßig. Von Implementierungen wird nicht verlangt, ungültige Daten für Komponenten außerhalb der Grenzen zurückzugeben, obwohl sie dies normalerweise tun. Ein String kann Komponenten innerhalb der Grenzen haben (mit den oben definierten Grenzen), stellt jedoch in der Realität kein Datum dar (zum Beispiel "30. Februar"). Implementierungen verhalten sich in diesem Fall inkonsistent. Die Seite Date.parse() bietet weitere Beispiele zu diesen nichtstandardisierten Fällen.

Andere Möglichkeiten, ein Datum zu formatieren

  • toISOString() gibt einen String im Format 1970-01-01T00:00:00.000Z zurück (das oben eingeführte Datum-Zeit-String-Format, das ein vereinfachtes ISO 8601 darstellt). toJSON() ruft toISOString() auf und gibt das Ergebnis zurück.
  • toString() gibt einen String im Format Thu Jan 01 1970 00:00:00 GMT+0000 (Coordinated Universal Time) zurück, während toDateString() und toTimeString() den jeweiligen Datum- und Zeitteil des Strings zurückgeben. [Symbol.toPrimitive]() (bei Übergabe von "string" oder "default") ruft toString() auf und gibt das Ergebnis zurück.
  • toUTCString() gibt einen String im Format Thu, 01 Jan 1970 00:00:00 GMT zurück (verallgemeinert RFC 7231).
  • toLocaleDateString(), toLocaleTimeString(), und toLocaleString() verwenden lokalspezifische Datums- und Zeitformate, die üblicherweise durch die Intl-API bereitgestellt werden.

Siehe den Abschnitt Formate von toString-Methoden-Rückgabewerten für Beispiele.

Konstruktor

Date()

Wenn als Konstruktor aufgerufen, gibt ein neues Date-Objekt zurück. Wenn als Funktion aufgerufen, gibt eine String-Repräsentation des aktuellen Datums und der aktuellen 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, mit ignorierten Schaltsekunden.

Date.parse()

Analysiert eine String-Repräsentation eines Datums und gibt die Anzahl der Millisekunden seit dem 1. Januar 1970 00:00:00 UTC zurück, mit ignorierten 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, mit ignorierten Schaltsekunden.

Instanzeigenschaften

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

Date.prototype.constructor

Die Konstruktorfunktion, 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 vorherige Zeiten zurückgegeben.)

Date.prototype.getTimezoneOffset()

Gibt den Zeitzonen-Offset in Minuten für das aktuelle Gebietsschema zurück.

Date.prototype.getUTCDate()

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

Date.prototype.getUTCDay()

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

Date.prototype.getUTCFullYear()

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

Date.prototype.getUTCHours()

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

Date.prototype.getUTCMilliseconds()

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

Date.prototype.getUTCMinutes()

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

Date.prototype.getUTCMonth()

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

Date.prototype.getUTCSeconds()

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

Date.prototype.getYear() Veraltet

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

Date.prototype.setDate()

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

Date.prototype.setFullYear()

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

Date.prototype.setHours()

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

Date.prototype.setMilliseconds()

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

Date.prototype.setMinutes()

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

Date.prototype.setMonth()

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

Date.prototype.setSeconds()

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

Date.prototype.setTime()

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

Date.prototype.setUTCDate()

Setzt den Tag des Monats für ein angegebenes Datum gemäß universeller Zeit.

Date.prototype.setUTCFullYear()

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

Date.prototype.setUTCHours()

Setzt die Stunde für ein angegebenes Datum gemäß universeller Zeit.

Date.prototype.setUTCMilliseconds()

Setzt die Millisekunden für ein angegebenes Datum gemäß universeller Zeit.

Date.prototype.setUTCMinutes()

Setzt die Minuten für ein angegebenes Datum gemäß universeller Zeit.

Date.prototype.setUTCMonth()

Setzt den Monat für ein angegebenes Datum gemäß universeller Zeit.

Date.prototype.setUTCSeconds()

Setzt die Sekunden für ein angegebenes Datum gemäß universeller Zeit.

Date.prototype.setYear() Veraltet

Setzt das Jahr (normalerweise 2–3 Ziffern) für ein angegebenes Datum gemäß lokaler Zeit. Verwenden Sie setFullYear() stattdessen.

Date.prototype.toDateString()

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

Date.prototype.toISOString()

Konvertiert ein Datum in einen String im erweiterten ISO 8601-Format.

Date.prototype.toJSON()

Gibt einen String zurück, der das Date mit toISOString() darstellt. Soll implizit von JSON.stringify() aufgerufen werden.

Date.prototype.toLocaleDateString()

Gibt einen String mit einer ortsspezifischen Darstellung des Datumsanteils dieses Datums gemäß der Systemeinstellungen zurück.

Date.prototype.toLocaleString()

Gibt einen String mit einer ortsspezifischen Darstellung dieses Datums zurück. Überschreibt die Object.prototype.toLocaleString()-Methode.

Date.prototype.toLocaleTimeString()

Gibt einen String mit einer ortsspezifischen Darstellung des Zeitanteils dieses Datums gemäß der Systemeinstellungen zurück.

Date.prototype.toString()

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

Date.prototype.toTemporalInstant() Experimentell

Gibt ein neues Temporal.Instant-Objekt mit demselben epochMilliseconds-Wert wie der Zeitstempel dieses Datums zurück.

Date.prototype.toTimeString()

Gibt den "Zeit"-Teil des Date als menschenlesbaren String zurück.

Date.prototype.toUTCString()

Konvertiert ein Datum in einen String, der die UTC-Zeitzone verwendet.

Date.prototype.valueOf()

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

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 mehrere Möglichkeiten, JavaScript-Daten zu erstellen:

Hinweis: Das Erstellen eines Datums aus einem String weist viele Verhaltensinkonsistenzen auf. Siehe Datum-Zeit-String-Format für Vorbehalte bei der Verwendung verschiedener 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 Rückgabewerte der toString-Methode

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 von zweistelligen Jahren

new Date() zeigt altes, unerwünschtes, inkonsistentes Verhalten mit zweistelligen Jahreswerten; insbesondere, wenn ein new Date()-Aufruf einen zweistelligen Jahreswert erhält, wird dieser Jahreswert nicht als ein wörtliches Jahr interpretiert und als solches verwendet, sondern stattdessen als relativer Offset interpretiert - in einigen Fällen als Offset ab dem Jahr 1900, aber in anderen Fällen als Offset ab dem 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)

Daher, um Daten zwischen den Jahren 0 und 99 zu erstellen und abzurufen, verwenden Sie stattdessen die bevorzugten setFullYear() und getFullYear()-Methoden:.

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 werden kann.

Aufgrund der unterschiedlichen Längen von Tagen (aufgrund von Sommerzeitumstellung), Monaten und Jahren erfordert das Ausdrücken der verstrichenen Zeit in Einheiten größer als Stunden, Minuten und Sekunden, dass eine Reihe von Problemen angesprochen werden, und sollte gründlich erforscht werden, bevor es versucht wird.

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 das Performance API High-Resolution-Time-Feature unterstützen, kann Performance.now() zuverlässigere und genauere Messungen der verstrichenen Zeit als Date.now() bereitstellen.

Die Anzahl der Sekunden seit dem ECMAScript-Epochen ermitteln

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

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

Spezifikationen

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

Browser-Kompatibilität

Siehe auch