`Date`-Objekt
Dieser Artikel erklärt das Date-Objekt.
Wir erklären das Date-Objekt Schritt für Schritt – von den grundlegenden Mechanismen bis hin zu den häufig genutzten Operationen in der Praxis – anhand konkreter Beispiele.
YouTube Video
Date-Objekt
Was ist das Date-Objekt?
Das JavaScript-Date-Objekt ist ein Standardobjekt zur Verarbeitung von Datum und Uhrzeit. Intern verwaltet es Datum und Uhrzeit basierend auf der Anzahl der Millisekunden seit dem 1. Januar 1970, 00:00:00 UTC.
Erstellen wir zunächst ein Date-Objekt, das das aktuelle Datum und die aktuelle Uhrzeit repräsentiert, und überprüfen dessen Inhalt.
1const now = new Date();
2console.log(now);- Dieser Code erzeugt ein
Date-Objekt, das das aktuelle Datum und die aktuelle Uhrzeit zum Zeitpunkt der Ausführung repräsentiert. Das Anzeigeformat hängt von der Ausführungsumgebung ab, z. B. vom Browser oder vom Betriebssystem.
Wie erstellt man ein Date-Objekt
Date-Objekte können je nach Bedarf auf verschiedene Weise erstellt werden. Ein besonders wichtiger, aber leicht zu übersehender Punkt ist, dass der Konstruktor-Parameter für den Monat nullbasiert ist, das heißt: Die Monate beginnen bei 0.
1const d1 = new Date(); // Current date and time
2const d2 = new Date("2025-01-01"); // Create from an ISO date string
3const d3 = new Date(2025, 0, 1); // January 1, 2025 (month is zero-based)
4const d4 = new Date(2025, 0, 1, 10, 30); // January 1, 2025, 10:30
5
6console.log(d1, d2, d3, d4);- Bei
new Date(year, month, day)bedeutet dermonth-Parameter:0ist Januar und11ist Dezember. Wenn Sie diese Spezifikation nicht beachten, können Sie unbeabsichtigt ein Datum erstellen, das um einen Monat verschoben ist – also seien Sie immer vorsichtig.
Abrufen der einzelnen Bestandteile von Datum und Uhrzeit
Sie können das Jahr, den Monat, den Tag, die Uhrzeit und den Wochentag einzeln aus einem Date-Objekt abrufen. Alle Getter-Methoden liefern Zahlenwerte zurück.
1const date = new Date();
2
3console.log(date.getFullYear()); // Year
4console.log(date.getMonth()); // Month (0-based: 0 = January)
5console.log(date.getDate()); // Day of the month
6console.log(date.getHours()); // Hours
7console.log(date.getMinutes()); // Minutes
8console.log(date.getSeconds()); // Seconds
9console.log(date.getDay()); // Day of the week (0 = Sunday, 6 = Saturday)
- Wie bei der Erstellung gilt: Auch
getMonth()ist nullbasiert. Beim Anzeigen wird üblicherweise 1 hinzugefügt, um den Wert anzupassen. getDay()gibt den Wochentag als Zahl zurück. 0 steht für Sonntag und 6 steht für Samstag.
Ändern von Datum und Uhrzeit
Date ist ein veränderbares (mutables) Objekt – das bedeutet, Sie können die Werte nachträglich ändern. Diese Eigenschaft ist nützlich, aber Sie müssen auf unbeabsichtigte Nebenwirkungen achten.
Sie können mit den set-Methoden die Werte eines bestehenden Date-Objekts ändern.
1const date = new Date("2025-01-01");
2
3date.setFullYear(2026);
4date.setMonth(5); // June
5date.setDate(15);
6
7console.log(date);setMonth()ist ebenfalls nullbasiert. Das Originalobjekt wird direkt verändert.
Datumsberechnungen: Hinzufügen und Subtrahieren
Es ist üblich, Datumsberechnungen mithilfe von Millisekunden oder mittels setDate() durchzuführen. Insbesondere für tagesbasierte Berechnungen ist die Verwendung von setDate() besonders intuitiv und sicher.
1const date = new Date("2025-01-01");
2
3date.setDate(date.getDate() + 7);
4console.log(date);- In diesem Beispiel berechnen wir das Datum, das 7 Tage nach dem angegebenen Datum liegt. Selbst wenn die Addition in einen neuen Monat übergeht, wird das Datum automatisch angepasst.
Vergleich von Date-Objekten
Date-Objekte können wie Zahlen verglichen werden. Dies liegt daran, dass der interne Millisekundenwert verglichen wird.
1const a = new Date("2025-01-01");
2const b = new Date("2025-01-10");
3
4console.log(a < b); // true
5console.log(a > b); // false
- Wenn Sie die Reihenfolge von Daten bestimmen möchten, sind keine zusätzlichen Umwandlungen erforderlich. Sie können Vergleichsoperatoren direkt verwenden.
Arbeiten mit Zeitstempeln (Millisekunden)
Date kann zu Zahlen, die Millisekunden (Zeitstempel) darstellen, konvertiert und davon erstellt werden. Dieses Format wird häufig in APIs oder bei der Integration von Datenbanken verwendet.
1const now = Date.now();
2console.log(now);
3
4const date = new Date(now);
5console.log(date);Date.now()gibt die aktuelle Zeit in Millisekunden zurück. Dies ist sehr nützlich, wenn Sie den Wert als Zahl speichern oder vergleichen möchten.
Formatieren von Daten als Zeichenketten
Die direkte Darstellung eines Date-Objekts führt häufig zu einem Format, das Ihren Anforderungen nicht entspricht. Deshalb sollten Sie das Format explizit an Ihre Anforderungen anpassen.
1const date = new Date("2025-01-01");
2
3const formatted = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`;
4console.log(formatted);- Durch manuelles Formatieren haben Sie die volle Kontrolle über das Anzeigeformat. In der Praxis werden dafür häufig Bibliotheken verwendet.
Unterschied zwischen UTC und Lokalzeit
Date stellt Methoden für die Verarbeitung sowohl der Lokalzeit als auch der UTC zur Verfügung. Es ist wichtig, diesen Unterschied richtig zu verstehen – insbesondere bei Serverintegrationen und internationaler Kompatibilität.
1const date = new Date();
2
3console.log(date.getHours()); // Local time (hours)
4console.log(date.getUTCHours()); // UTC time (hours)
- Die Methoden
getUTC*liefern immer Werte bezogen auf UTC zurück. Seien Sie besonders vorsichtig, wenn Sie Daten über verschiedene Zeitzonen hinweg verarbeiten.
Vorsichtsmaßnahmen beim Umgang mit Date-Objekten
Date ist praktisch, hat aber auch einige tückische Aspekte. Insbesondere der nullbasierte Monat und die Veränderbarkeit sind häufige Fehlerursachen.
Sehen wir uns unten konkrete Beispiele an, um die Auswirkungen der Veränderlichkeit von Date zu erkennen.
1const original = new Date("2025-01-01");
2const copy = new Date(original);
3
4copy.setDate(10);
5
6console.log(original);
7console.log(copy);- Wenn Sie das ursprüngliche Datum und die Uhrzeit behalten möchten, erstellen Sie immer eine Kopie. Wenn Sie sich dieses Punktes bewusst sind, können Sie unbeabsichtigte Fehler vermeiden.
Gründe, warum Date schwer zu handhaben ist, und Kriterien für die Verwendung von Bibliotheken.
Das Date-Objekt bietet als Standardfunktion ausreichende Möglichkeiten, ist aber in der Praxis manchmal schwierig zu verwenden. Typische Probleme sind, dass Monate und Wochentage bei null beginnen, die Verwechslung von Ortszeit und UTC sowie die Veränderlichkeit des Objekts. Mit zunehmender Datenverarbeitung können diese Probleme zu mehr Fehlern führen.
Date ist für einfache Datumsabfragen und Vergleiche ausreichend, aber die Lesbarkeit und Wartbarkeit des Codes nimmt mit steigenden Berechnungen oder Formatierungen ab.
Wenn Sie folgende Anforderungen haben, sollten Sie den Einsatz leichter Datums-Bibliotheken wie dayjs oder date-fns in Betracht ziehen.
- Sie müssen explizit mit Zeitzonen umgehen.
- Sie müssen häufig Datums- oder Intervallberechnungen durchführen.
- Sie möchten das Anzeigeformat flexibel ändern.
- Sie möchten Daten und Uhrzeiten unveränderbar handhaben.
Zusammenfassung
Date-Objekte sind das grundlegendste Werkzeug für die Arbeit mit Datum und Uhrzeit in JavaScript. Wenn Sie die Besonderheiten verstehen und das Objekt korrekt erstellen, abrufen, berechnen und formatieren, können Sie es sicher im praktischen Alltag nutzen.
Nachdem Sie die Grundlagen beherrschen, ist der zusätzliche Einsatz von Datumsbibliotheken nach Bedarf eine praktische Option.
Sie können den obigen Artikel mit Visual Studio Code auf unserem YouTube-Kanal verfolgen. Bitte schauen Sie sich auch den YouTube-Kanal an.