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.000ZAchtung
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
1741444215000Es 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.2025Rechnen 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 VormonatsAusgabe:
291 Tage
2025-04-07
29Die 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 trueUngültige Daten
const kaputt = new Date("kein Datum");
console.log(kaputt.getTime(), Number.isNaN(kaputt.getTime()));
console.log(String(kaputt));Ausgabe:
NaN true
Invalid DateHinweis
Datehat 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
Datespeichert Millisekunden seit 1970 (UTC)- Monate sind 0-basiert, Tage ab 1
toISOString()liefert das ISO-Format;toLocaleDateStringformatiert 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
Welche Zahl hat der Monat Januar in new Date(2025, 0, 1)?
- 0 (richtig)
- 1
- 12
- -1
Was liefert die Differenz zweier Date-Objekte?
- Millisekunden (richtig)
- Tage
- Sekunden
- Ein Date-Objekt
Welches Format liefert toISOString()?
- 2025-03-08T14:30:00.000Z (richtig)
- 08.03.2025
- 03/08/2025
- Sat Mar 08 2025
Weiter im Kurs
Zurück: JSON
Weiter: Reguläre Ausdrücke
Alle Kapitel: JavaScript im Überblick