Arbeiten mit Datum und Zeit in JavaScript: Von A bis Z für Node.js

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum die Arbeit mit Daten in JavaScript eine Herausforderung für Entwickler ist

Die Arbeit mit Datum und Zeit gehört zu den häufigsten und gleichzeitig tückischsten Aufgaben in der Webentwicklung. Es scheint, was könnte einfacher sein, als das aktuelle Datum zu erhalten oder die Differenz zwischen zwei Ereignissen zu berechnen? In der Praxis stoßen Entwickler auf JavaScript (Node.js) jedoch auf viele Fallstricke: Zeitzonen, ISO-Format, das nicht offensichtliche Verhalten der Methode getMonth() und veraltete Bibliotheken. In diesem Artikel analysieren wir die Arbeit mit Daten von den grundlegenden Prinzipien bis hin zu fortgeschrittenen Techniken, wobei wir nur das Standardobjekt Date und die moderne Bibliothek date-fns verwenden.



1. Grundlagen des Date-Objekts in Node.js

Das eingebaute Objekt Date ist die Grundlage für die Arbeit mit Zeit. Es speichert die Anzahl der Millisekunden, die seit dem 1. Januar 1970 (Unix-Epoche) vergangen sind. Betrachten wir die grundlegenden Operationen.



Erstellen und Abrufen der aktuellen Zeit

Der einfachste Weg, ein Datumsobjekt zu erstellen, ist der Aufruf von new Date() ohne Argumente. Dies gibt das aktuelle Datum und die Uhrzeit auf dem Server zurück.

// Aktuelles Datum und Uhrzeit (in der Zeitzone des Servers)const now = new Date();console.log(now); // Beispiel: 2024-05-20T14:30:00.000Z

// Erstellen aus einem ISO-Stringconst specificDate = new Date('2024-12-25T10:00:00');console.log(specificDate); // 2024-12-25T10:00:00.000Z

// Erstellen aus Komponenten (Jahr, Monat, Tag, Stunden, Minuten, Sekunden)const birthday = new Date(1990, 5, 15); // Achtung: Monat 5 = Juni!console.log(birthday); // 1990-06-15T00:00:00.000Z

Wichtiger Hinweis: Monate werden in JavaScript ab 0 gezählt (Januar — 0, Dezember — 11). Dies ist eine häufige Fehlerquelle.



Methoden zum Abrufen von Datumskomponenten

Zum Extrahieren einzelner Teile des Datums werden Getter verwendet. Denken Sie daran, dass sie die Werte in der lokalen Zeitzone des Servers zurückgeben.

const date = new Date('2024-03-15T12:30:45');

console.log(date.getFullYear()); // 2024console.log(date.getMonth()); // 2 (März, da Zählung ab 0)console.log(date.getDate()); // 15console.log(date.getDay()); // 5 (Freitag, 0 - Sonntag)console.log(date.getHours()); // 12console.log(date.getMinutes()); // 30console.log(date.getSeconds()); // 45

Für die Arbeit in UTC (koordinierte Weltzeit) verwenden Sie Methoden mit dem Präfix getUTC..., z.B. getUTCHours().



2. Formatierung und Ausgabe von Daten

Node.js hat keine eingebaute, bequeme Formatierung von Daten in ein beliebiges Zeichenfolgenformat (z.B. "15. März 2024"). Dafür gibt es zwei Wege: manuelle Zusammenstellung der Zeichenfolge oder die Verwendung von Bibliotheken.



Manuelle Formatierung (ohne externe Bibliotheken)

Wenn Sie ein Datum in einem einfachen Format ausgeben müssen, können Sie eine kleine Funktion schreiben.

function formatDate(date) {  const day = String(date.getDate()).padStart(2, '0');  const month = String(date.getMonth() + 1).padStart(2, '0');  const year = date.getFullYear();  return `${day}.${month}.${year}`;}

const today = new Date();console.log(formatDate(today)); // Beispiel: "20.05.2024"


Moderne Lösung: Die Bibliothek date-fns

Die Bibliothek date-fns ist eine moderne, modulare und leichtgewichtige Alternative zum veralteten moment.js. Sie ist ideal für Node.js geeignet.

// Installation: npm install date-fns

const { format, addDays, differenceInDays } = require('date-fns');const { de } = require('date-fns/locale'); // Lokalisierung

const date = new Date();

// Formatierung mit Lokalisierungconsole.log(format(date, 'dd. MMMM yyyy', { locale: de }));// Beispiel: "20. Mai 2024"

// Tage hinzufügenconst nextWeek = addDays(date, 7);console.log(format(nextWeek, 'yyyy-MM-dd')); // "2024-05-27"

// Differenz in Tagenconst start = new Date(2024, 0, 1);const end = new Date(2024, 11, 31);co

Blogs

Buchempfehlungen