EMZETT.
Login

Kurz: Mit dem eingebauten Objekt Date arbeitest du mit Zeitpunkten. Intern speichert es die Millisekunden seit dem 1. Januar 1970, 00:00 Uhr UTC (Unix-Zeit).

Teil des Kurses JavaScript

Kapitel 19 von 40 im Kurs JavaScript. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Mit dem eingebauten Objekt Date arbeitest du mit Zeitpunkten. Intern speichert es die Millisekunden seit dem 1. Januar 1970, 00:00 Uhr UTC (Unix-Zeit).

Erzeugen

const jetzt = new Date();
console.log(jetzt instanceof Date, typeof Date.now());
 
const d1 = new Date(2025, 11, 24, 18, 30);    // Monat 0-basiert! 11 = Dezember
const d2 = new Date("2025-03-08T14:30:00Z");  // ISO-Format, Z = UTC
const d3 = new Date(0);
console.log(d1.getFullYear(), d1.getMonth(), d1.getDate());
console.log(d2.toISOString());
console.log(d3.toISOString());

Ausgabe:

true number
2025 11 24
2025-03-08T14:30:00.000Z
1970-01-01T00:00:00.000Z

Achtung

Monate zählen von 0 (Januar) bis 11 (Dezember). Tage (getDate) zählen ab 1, Wochentage (getDay) von 0 (Sonntag) bis 6.

Auslesen

const d = new Date(Date.UTC(2025, 2, 8, 14, 30, 15));
console.log(d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate());
console.log(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds());
console.log(d.getUTCDay());                 // 6 = Samstag
console.log(d.getTime());

Ausgabe:

2025 3 8
14 30 15
6
1741444215000

Es gibt zu jeder Methode eine UTC-Variante. Ohne UTC zählt die Ortszeit des Rechners.

Formatieren mit Intl

Die eingebaute Intl.DateTimeFormat-API formatiert sprach- und regionsrichtig:

const d = new Date(Date.UTC(2025, 2, 8, 14, 30));
console.log(d.toLocaleDateString("de-DE", { timeZone: "UTC" }));
console.log(d.toLocaleDateString("en-US", { timeZone: "UTC" }));
console.log(d.toLocaleDateString("de-DE", { weekday: "long", year: "numeric", month: "long", day: "numeric", timeZone: "UTC" }));
console.log(d.toLocaleTimeString("de-DE", { hour: "2-digit", minute: "2-digit", timeZone: "UTC" }));
console.log(new Intl.DateTimeFormat("de-DE", { dateStyle: "medium", timeZone: "UTC" }).format(d));

Ausgabe:

8.3.2025
3/8/2025
Samstag, 8. März 2025
14:30
08.03.2025

Rechnen mit Datum

const start = new Date("2025-03-08T00:00:00Z");
const ende = new Date("2025-12-24T00:00:00Z");
const tage = Math.round((ende - start) / (1000 * 60 * 60 * 24));
console.log(tage, "Tage");
 
const plus30 = new Date(start);
plus30.setUTCDate(plus30.getUTCDate() + 30);
console.log(plus30.toISOString().slice(0, 10));
 
console.log(new Date(Date.UTC(2024, 2, 0)).getUTCDate());   // Tag 0 = letzter Tag des Vormonats

Ausgabe:

291 Tage
2025-04-07
29

Die Differenz zweier Daten ist eine Zahl in Millisekunden. Mit setDate kannst du über Monatsgrenzen hinweg rechnen, JavaScript korrigiert den Überlauf selbst.

Vergleichen und Sortieren

const a = new Date("2025-01-01"), b = new Date("2025-06-01");
console.log(a < b, a.getTime() === b.getTime(), +a === +new Date("2025-01-01"));
const liste = [b, a].sort((x, y) => x - y);
console.log(liste.map(d => d.toISOString().slice(0, 10)));

Ausgabe:

true false true
[ '2025-01-01', '2025-06-01' ]

Vergleiche mit < und > funktionieren; Gleichheit prüfst du über getTime() (zwei verschiedene Objekte sind nie ===).

Zeit messen

const t0 = performance.now();
let s = 0;
for (let i = 0; i < 1e6; i++) s += i;
const dauer = performance.now() - t0;
console.log(s, dauer >= 0);

Ausgabe:

499999500000 true

Ungültige Daten

const kaputt = new Date("kein Datum");
console.log(kaputt.getTime(), Number.isNaN(kaputt.getTime()));
console.log(String(kaputt));

Ausgabe:

NaN true
Invalid Date

Hinweis

Date hat bekannte Schwächen (Zeitzonen, veränderliche Objekte). Der neue Standard Temporal löst sie. Bis er überall verfügbar ist, helfen Bibliotheken wie date-fns oder Luxon.

Merke

  • Date speichert Millisekunden seit 1970 (UTC)
  • Monate sind 0-basiert, Tage ab 1
  • toISOString() liefert das ISO-Format; toLocaleDateString formatiert regional
  • Differenz zweier Daten = Millisekunden
  • Speichere Zeitpunkte in UTC und rechne erst zur Anzeige um

Übungsaufgabe

Berechne, wie viele Tage es von heute bis zum 31. Dezember dieses Jahres sind, und gib das heutige Datum im Format TT.MM.JJJJ aus.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: JSON

Weiter: Reguläre Ausdrücke

Alle Kapitel: JavaScript im Überblick