Arbeiten mit Datum und Zeit in JavaScript (Node.js): Von den Grundlagen bis zu fortgeschrittenen Techniken
Das Arbeiten mit Datum und Zeit ist eine der häufigsten Aufgaben in der Backend-Entwicklung. Ob es um das Logging von Ereignissen, die Berechnung von Fristen, die Generierung von Berichten oder die Arbeit mit APIs geht – die Fähigkeit, Zeitstempel korrekt zu verarbeiten, ist eine kritisch wichtige Fähigkeit. In diesem Artikel behandeln wir alle wesentlichen Aspekte der Arbeit mit Daten in der Node.js-Umgebung: Vom integrierten Date-Objekt bis hin zu beliebten Bibliotheken, die das Leben des Entwicklers vereinfachen.
1. Das integrierte Date-Objekt: Grundlagen und Fallstricke
In JavaScript ist das integrierte Date-Objekt für die Arbeit mit Daten zuständig. Es bietet grundlegende Methoden zum Erstellen, Lesen und Manipulieren von Daten. Es hat jedoch eine Reihe von Besonderheiten, die man kennen sollte.
Erstellen eines Date-Objekts
Der einfachste Weg, das aktuelle Datum und die aktuelle Uhrzeit zu erhalten:
const now = new Date();console.log(now); // 2025-03-20T14:30:00.000Z (Beispiel)Man kann ein Datum aus einem String, einem Timestamp (Millisekunden seit dem 1. Januar 1970) oder durch manuelles Festlegen der Komponenten erstellen:
// Aus einem String (ISO 8601)const dateFromString = new Date("2025-12-25T10:00:00Z");
// Aus einem Timestampconst dateFromTimestamp = new Date(1735048800000);
// Aus Komponenten (Jahr, Monat (0-11), Tag, Stunde, Minute, Sekunde, Millisekunde)const dateFromParts = new Date(2025, 11, 25, 10, 0, 0, 0); // 25. Dezember 2025 10:00:00console.log(dateFromParts); // 2025-12-25T07:00:00.000Z (abhängig von der Zeitzone)Wichtig: Monate werden in JavaScript ab 0 gezählt (Januar = 0, Dezember = 11). Dies ist eine häufige Fehlerquelle.
Abrufen von Datumskomponenten
Das Date-Objekt stellt Methoden zum Abrufen einzelner Komponenten bereit:
const date = new Date();console.log(date.getFullYear()); // 2025console.log(date.getMonth()); // 2 (März, da Zählung bei 0 beginnt)console.log(date.getDate()); // 20console.log(date.getDay()); // 4 (Donnerstag, 0 = Sonntag)console.log(date.getHours()); // 17console.log(date.getMinutes()); // 45console.log(date.getSeconds()); // 12console.log(date.getMilliseconds());// 345console.log(date.getTime()); // 1742474712345 (Timestamp)Beachten Sie: Alle diese Methoden geben Werte in der lokalen Zeitzone des Servers zurück. Für die Arbeit mit UTC verwenden Sie Methoden mit dem Präfix getUTC... (z. B. getUTCFullYear()).
Manipulation von Daten
Die Änderung eines Datums erfolgt über set-Methoden. Sie mutieren das ursprüngliche Objekt:
const date = new Date();date.setFullYear(2026);date.setMonth(0); // Januardate.setDate(15);console.log(date); // 2026-01-15T... (die übrigen Komponenten bleiben erhalten)Fallstrick: set-Methoden korrigieren das Datum automatisch. Wenn man beispielsweise den 32. Januar setzt, wird das Datum zum 1. Februar. Dies kann sowohl praktisch als auch unerwartet sein.
2. Formatierung von Daten und Ausgabe im gewünschten Format
Die integrierte Methode toLocaleDateString() ermöglicht die Ausgabe eines Datums in dem für eine bestimmte Locale üblichen Format:
const date = new Date(2025, 11, 25);console.log(date.toLocaleDateString('ru-RU')); // 25.12.2025console.log(date.toLocaleDateString('en-US')); // 12/25/2025console.log(date.toLocaleDateString('de-DE')); // 25.12.2025Für eine flexiblere Formatierung kann man Intl.DateTimeFormat verwenden:
const formatter = new Intl.DateTimeFormat('de-DE', { year: 'numeric', month: 'long', day: 'numeric', weekday: 'long', hour: '2-digit', minute: '2-digit'});console.log(formatter.format(new Date())); // "Donnerstag, 20. März 2025, 17:45"Für komplexe Formate (z. B. "2025-03-20T14:30:00+03:00") oder benutzerdefinierte Vorlagen ist es jedoch besser, Bibliotheken zu verwenden (dazu weiter unten).
Blogs
Buchempfehlungen
Lesen Sie auch
CI/CD für Rust-Projekte: GitHub Actions — Teil 2
Arbeiten mit Datum und Uhrzeit in C#: fortgeschrittene Techniken und Tipps
Rust vs Python fürs Backend: Was Anfänger 2025 wählen sollten
Algorithmen und Datenstrukturen in C#: Praktischer Leitfaden mit Beispielen
Top-Anfängerfehler von Kotlin-Entwicklern: von A bis Z
Blogs
Buchempfehlungen
Lesen Sie auch
CI/CD für Rust-Projekte: GitHub Actions — Teil 2