Arbeiten mit Datum und Zeit in JavaScript (Node.js): Von den Grundlagen bis zu fortgeschrittenen Techniken
Das Arbeiten mit Datum und Zeit gehört zu den häufigsten Aufgaben in der Webentwicklung. Ob Ereignisprotokollierung, Verarbeitung von Benutzerdaten, Aufgabenplanung oder Anzeige von Zeitstempeln – ohne die Fähigkeit, Daten in JavaScript zu verwalten, kommt man nicht aus. In diesem Artikel behandeln wir alle wichtigen Aspekte der Arbeit mit Daten in der Node.js-Umgebung: von der Erstellung und Formatierung bis hin zu komplexen Manipulationen mit Zeitzonen und der Verwendung beliebter Bibliotheken.
Grundlagen: Das Date-Objekt in JavaScript
Das eingebaute Date-Objekt ist die Grundlage für die Arbeit mit Daten. Es speichert die Anzahl der Millisekunden, die seit dem 1. Januar 1970 (Unix-Epoche) vergangen sind.
Erstellen eines Datums
Es gibt mehrere Möglichkeiten, eine Date-Instanz zu erstellen:
// Aktuelles Datum und Uhrzeitconst now = new Date();console.log(now); // 2025-03-15T10:30:00.000Z
// Aus Millisekunden (Unix-Timestamp)const fromTimestamp = new Date(1742025000000);console.log(fromTimestamp); // 2025-03-15T10:30:00.000Z
// Aus einem String (ISO 8601)const fromString = new Date('2025-03-15T10:30:00');console.log(fromString);
// Aus Komponenten (Jahr, Monat, Tag, Stunde, Minute, Sekunde, Millisekunde)const fromComponents = new Date(2025, 2, 15, 10, 30, 0, 0); // Monate: 0-11console.log(fromComponents); // March 15, 2025 10:30:00Wichtig: Monate werden in JavaScript von 0 an gezählt (Januar = 0, Dezember = 11).
Abrufen von Datumskomponenten
Methoden zum Extrahieren einzelner Datumsteile:
const date = new Date('2025-03-15T10:30:45.123Z');
console.log(date.getFullYear()); // 2025console.log(date.getMonth()); // 2 (März)console.log(date.getDate()); // 15console.log(date.getDay()); // 6 (Samstag, 0 = Sonntag)console.log(date.getHours()); // 10console.log(date.getMinutes()); // 30console.log(date.getSeconds()); // 45console.log(date.getMilliseconds());// 123console.log(date.getTime()); // Millisekunden seit der EpocheDatumsformatierung in Node.js
Das Standard-Date-Objekt bietet begrenzte Formatierungsmöglichkeiten. Für eine lesbare Ausgabe verwenden Sie toLocaleDateString() und toLocaleString().
const date = new Date('2025-03-15T10:30:00');
// Lokalisierte Formatierungconsole.log(date.toLocaleDateString('de-DE')); // 15.03.2025console.log(date.toLocaleTimeString('de-DE')); // 10:30:00console.log(date.toLocaleString('de-DE')); // 15.03.2025, 10:30:00
// Mit Optionenconst options = { year: 'numeric', month: 'long', day: 'numeric', weekday: 'long', hour: '2-digit', minute: '2-digit'};console.log(date.toLocaleString('de-DE', options)); // Samstag, 15. März 2025, 10:30Benutzerdefinierte Formatierung
Für die vollständige Kontrolle schreiben Sie eine einfache Funktion:
function formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') { const map = { YYYY: date.getFullYear(), MM: String(date.getMonth() + 1).padStart(2, '0'), DD: String(date.getDate()).padStart(2, '0'), HH: String(date.getHours()).padStart(2, '0'), mm: String(date.getMinutes()).padStart(2, '0'), ss: String(date.getSeconds()).padStart(2, '0'), }; return format.replace(/YYYY|MM|DD|HH|mm|ss/g, match => map[match]);}
console.log(formatDate(new Date(), 'DD.MM.YYYY')); // 15.03.2025console.log(formatDate(new Date(), 'HH:mm:ss')); // 10:30:00Manipulation von Daten: Hinzufügen, Subtrahieren, Vergleichen
Daten können direkt über die set*-Methoden oder durch Arbeiten mit Millisekunden geändert werden.
Zeit hinzufügen und subtrahieren
const date = new Date('2025-03-15T10:30:00');
// 5 Tage hinzufügendate.setDate(date.getDate() + 5);console.log(date); // 2025-03-20T10:30:00
// 2 Stunden hinzufügen
```