Überblick über Bibliotheken für die Arbeit mit Daten in JavaScript (Node.js)
Die Arbeit mit Daten gehört zu den häufigsten und gleichzeitig komplexesten Aufgaben in der Webentwicklung. In JavaScript hat das native Date-Objekt einige Nachteile: Veränderlichkeit (Mutabilität), eingeschränkte Formatierungs- und Parsing-Möglichkeiten sowie Probleme mit Zeitzonen. Glücklicherweise bietet das Node.js-Ökosystem mehrere leistungsstarke Bibliotheken, die die Datenmanipulation erheblich vereinfachen. In diesem Artikel betrachten wir die vier beliebtesten: Moment.js, Day.js, date-fns und Luxon.
1. Moment.js – der Klassiker
Lange Zeit war Moment.js der De-facto-Standard für die Arbeit mit Daten. Es bietet eine umfangreiche API zum Parsen, Validieren, Manipulieren und Anzeigen von Daten. Die Bibliothek gilt jedoch als veraltet (Maintenance-Modus) und wird aufgrund ihrer Größe (ca. 300 KB) und Performance-Problemen nicht mehr für neue Projekte empfohlen.
Installation:
npm install momentAnwendungsbeispiele:
const moment = require('moment');
// Aktuelles Datumconst now = moment();console.log(now.format('YYYY-MM-DD HH:mm:ss')); // 2025-03-15 14:30:00
// Parsen eines Stringsconst date = moment('2025-12-31', 'YYYY-MM-DD');console.log(date.add(1, 'day').format('DD.MM.YYYY')); // 01.01.2026
// Differenz zwischen Datenconst start = moment('2025-01-01');const end = moment('2025-03-15');console.log('Tage vergangen:', end.diff(start, 'days')); // 732. Day.js – eine leichte Alternative
Day.js ist eine minimalistische Bibliothek (nur 2 KB), die API-kompatibel mit Moment.js ist. Sie ist ideal für Projekte, bei denen die Bundle-Größe wichtig ist. Day.js unterstützt Plugins zur Erweiterung der Funktionalität (Zeitzonen, relative Zeitangaben usw.).
Installation:
npm install dayjsAnwendungsbeispiele:
const dayjs = require('dayjs');const relativeTime = require('dayjs/plugin/relativeTime');const utc = require('dayjs/plugin/utc');
dayjs.extend(relativeTime);dayjs.extend(utc);
// Aktuelles Datumconsole.log(dayjs().format('DD.MM.YYYY')); // 15.03.2025
// Relative Zeitconsole.log(dayjs('2025-03-10').fromNow()); // vor 5 Tagen
// Arbeiten mit UTCconsole.log(dayjs.utc().format()); // 2025-03-15T11:30:00Z3. date-fns – funktionaler Ansatz
date-fns ist eine moderne Bibliothek, die auf den Prinzipien der funktionalen Programmierung basiert. Im Gegensatz zu Moment.js verwendet sie keine veränderlichen Objekte und unterstützt Tree-Shaking, sodass nur die benötigten Funktionen importiert werden können, was die Bundle-Größe reduziert.
Installation:
npm install date-fnsAnwendungsbeispiele:
const { format, addDays, differenceInDays, parseISO } = require('date-fns');const { ru } = require('date-fns/locale');
// Formatierung mit Localeconsole.log(format(new Date(), 'd MMMM yyyy', { locale: ru })); // 15 марта 2025
// Manipulationenconst future = addDays(new Date(), 10);console.log(format(future, 'yyyy-MM-dd')); // 2025-03-25
// Differenzconst d1 = parseISO('2025-01-01');const d2 = new Date();console.log('Tage seit Neujahr:', differenceInDays(d2, d1)); // 734. Luxon – der moderne Standard
Luxon ist eine Bibliothek der Entwickler von Moment.js, jedoch ohne deren Nachteile. Sie verwendet native DateTime-, Duration- und Interval-Objekte und unterstützt Zeitzonen sowie Internationalisierung "out of the box". Luxon ist ideal für komplexe Szenarien mit Zeitzonen.
Installation:
npm install luxon Auch in der Bibliothek
Caching in TypeScript: Redis, node-cache und andere Tools
Cheerio für JavaScript (Node.js): Komplettguide mit Beispielen
Überwachung von Rust-Anwendungen: Die Bibliothek tracing und Metriken
Logging in Go: Überblick über die Standardbibliothek log und Alternativen
Java für Geolokalisierung und Karten: Bibliotheken, APIs und Beispiele