Arbeiten mit Daten in JavaScript (Node.js): Die besten Bibliotheken

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

Arbeiten mit Daten in JavaScript (Node.js): Überblick über beliebte Bibliotheken



Das Arbeiten mit Datum und Uhrzeit gehört zu den häufigen Aufgaben in der Webentwicklung. Das eingebaute Date-Objekt in JavaScript hat einen begrenzten Funktionsumfang und eine umständliche API. Glücklicherweise gibt es für Node.js zahlreiche Bibliotheken, die das Parsen, Formatieren, Manipulieren und Vergleichen von Daten vereinfachen. In diesem Artikel betrachten wir die vier beliebtesten Bibliotheken: Moment.js, Day.js, date-fns und Luxon.



1. Moment.js (legendär, aber veraltet)



Moment.js war lange Zeit der De-facto-Standard für die Arbeit mit Daten. Es bietet eine umfangreiche API zum Parsen, Validieren, Manipulieren und Formatieren. Das Projekt gilt jedoch offiziell als veraltet (legacy) – die Entwickler empfehlen die Verwendung moderner Alternativen. Hauptnachteile: große Größe (~300 KB), mutierende Methoden (ändern das ursprüngliche Objekt) und Probleme mit Tree Shaking.



// Installation: npm install momentconst moment = require('moment');

// Parsen und Formatierenconst now = moment();console.log(now.format('YYYY-MM-DD HH:mm:ss')); // 2024-01-15 14:30:00

// Manipulationenconst future = moment().add(7, 'days').startOf('week');console.log(future.format('dddd, MMMM Do YYYY')); // Monday, January 22nd 2024

// Differenz zwischen Datenconst a = moment('2024-01-01');const b = moment('2024-01-10');console.log(b.diff(a, 'days')); // 9


2. Day.js (leichter Nachfolger)



Day.js ist eine moderne Bibliothek mit derselben API wie Moment.js, aber nur 2 KB groß. Sie ist vollständig immun (ändert die ursprünglichen Objekte nicht), unterstützt Plugins und funktioniert hervorragend mit Tree Shaking. Ideal für Projekte, bei denen die Bundle-Größe wichtig ist.



// Installation: npm install dayjsconst dayjs = require('dayjs');const relativeTime = require('dayjs/plugin/relativeTime');dayjs.extend(relativeTime);

const now = dayjs();console.log(now.format('DD.MM.YYYY')); // 15.01.2024

// Arbeiten mit Zeitzonen (Plugin utc erforderlich)const utc = require('dayjs/plugin/utc');dayjs.extend(utc);const date = dayjs.utc('2024-01-15T12:00:00Z').local();console.log(date.format('HH:mm')); // 15:00 (abhängig von der Zeitzone)

// Relative Zeitconsole.log(dayjs('2023-12-25').fromNow()); // 3 weeks ago


3. date-fns (funktionaler Ansatz)



date-fns ist eine Bibliothek, die auf den Prinzipien der funktionalen Programmierung aufbaut. Anstelle eines einzelnen Objekts bietet sie viele reine Funktionen. Jede Funktion wird separat importiert, sodass nur der benötigte Code gebündelt wird. Dies ist die leistungsfähigste und modularste Bibliothek der genannten.



// Installation: npm install date-fnsconst { format, addDays, differenceInDays, startOfWeek } = require('date-fns');const { ru } = require('date-fns/locale');

const now = new Date();

// Formatieren mit Lokalisierungconsole.log(format(now, 'PPPP', { locale: ru })); // понедельник, 15 января 2024 г.

// Manipulationen (reine Funktionen)const nextWeek = addDays(now, 7);console.log(format(nextWeek, 'yyyy-MM-dd')); // 2024-01-22

// Differenzconst start = new Date(2024, 0, 1);console.log(differenceInDays(now, start)); // 14

// Wochenanfangconst monday = startOfWeek(now, { weekStartsOn: 1 });console.log(format(monday, 'dd.MM.yyyy')); // 15.01.2024


4. Luxon (moderner Standard von den Machern von Moment.js)



Luxon ist eine Bibliothek derselben Entwickler wie Moment.js, jedoch ohne deren Nachteile. Sie verwendet native DateTime-, Duration- und Interval-Objekte, ist vollständig immun, unterstützt Zeitzonen und Internationalisierung "out of the box". Empfohlen für neue Projekte.



// Installation: npm install luxonconst { DateTime, Duration, Inte                    

Empfehlungen