Arbeiten mit Daten in TypeScript: Überblick über beliebte Bibliotheken
Die Arbeit mit Datum und Zeit ist eine der häufigsten und gleichzeitig anspruchsvollsten Aufgaben in der Webentwicklung. Das eingebaute Date-Objekt in JavaScript (und TypeScript) hat eine Reihe von Nachteilen: Veränderlichkeit (Mutabilität), unintuitive API, Probleme mit Zeitzonen und das Fehlen praktischer Formatierungsmethoden. Glücklicherweise bietet das TypeScript-Ökosystem mehrere leistungsstarke Bibliotheken, die diese Probleme lösen und eine hervorragende Typunterstützung bieten.
In diesem Artikel betrachten wir die drei beliebtesten Bibliotheken: date-fns, Luxon und Day.js. Sie erfahren mehr über ihre Besonderheiten, Vorteile, Nachteile und sehen Beispiele für die Verwendung mit TypeScript.
1. date-fns — modular und funktional
date-fns ist eine Bibliothek, die auf den Prinzipien der funktionalen Programmierung aufbaut. Jede Funktion ist ein separates Modul, sodass Sie nur das importieren können, was Sie benötigen, und die Bundle-Größe erheblich reduzieren. In TypeScript verfügt die Bibliothek über integrierte Typen.
Installation
npm install date-fnsAnwendungsbeispiele mit TypeScript
import { format, addDays, differenceInDays, isAfter, parseISO } from 'date-fns';
// Datum formatierenconst today = new Date();console.log(format(today, 'yyyy-MM-dd')); // '2025-03-20'
// Tage hinzufügenconst nextWeek = addDays(today, 7);console.log(format(nextWeek, 'dd.MM.yyyy')); // '27.03.2025'
// Differenz zwischen Datenconst startDate = parseISO('2025-01-01');const endDate = parseISO('2025-12-31');const daysBetween = differenceInDays(endDate, startDate);console.log(`Tage im Jahr 2025: ${daysBetween}`); // 364
// Daten vergleichenconst isFuture = isAfter(parseISO('2025-06-01'), today);console.log(`Ist der 1. Juni 2025 in der Zukunft? ${isFuture}`); // trueVorteile
- Tree-Shaking — Sie importieren nur die benötigten Funktionen, was die Anwendungsgröße reduziert.
- Unveränderlichkeit (Immutabilität) — Funktionen ändern die ursprünglichen Objekte nicht, sondern geben neue zurück.
- TypeScript-Unterstützung — vollständige Typisierung aus der Box.
- Lokalisierung — Unterstützung vieler Sprachen, einschließlich Deutsch.
Nachteile
- Arbeitet mit dem nativen
Date, was bei komplexen Operationen mit Zeitzonen unpraktisch sein kann. - Keine integrierte Unterstützung für unveränderliche Objekte (wie in Luxon).
2. Luxon — leistungsstark und modern
Luxon ist eine Bibliothek von einem der Autoren von Moment.js, jedoch ohne dessen Nachteile. Sie verwendet eigene unveränderliche Objekte DateTime, Duration und Interval, was die Arbeit mit Daten intuitiv und sicher macht. Luxon bietet eine hervorragende Unterstützung für Zeitzonen und Locales.
Installation
npm install luxonFür TypeScript kann die Installation von Typen erforderlich sein:
npm install --save-dev @types/luxonAnwendungsbeispiele mit TypeScript
import { DateTime, Duration } from 'luxon';
// Erstellen und Formatierenconst now = DateTime.now();console.log(now.toFormat('yyyy-MM-dd HH:mm:ss')); // '2025-03-20 14:30:00'
// Arbeiten mit Zeitzonenconst moscowTime = DateTime.now().setZone('Europe/Moscow');console.log(`Moskauer Zeit: ${moscowTime.toFormat('HH:mm')}`);
// Intervall hinzufügenconst nextMonth = now.plus({ months: 1 });console.log(`In einem Monat: ${nextMonth.toFormat('dd.MM.yyyy')}`);
// Differenz zwischen Datenconst start = DateTime.fromISO('2025-01-01');const end = DateTime.fromISO('2025-12-31');const diff = end.diff(start, ['months', 'days']);console.log(`Differenz: ${diff.months} Monate und ${diff.days} Tage`);
// Arbeiten mit Dauernconst duration = Duration.from Auch in der Bibliothek
Überwachung von TypeScript-Anwendungen mit Appmetrics
iText 7 für Java: Komplette Anleitung mit Praxisbeispielen
Aufgabenplaner für Node.js (node-cron, node-schedule, Bull)
PDF-Generierung in JavaScript (Node.js): Bibliotheken und Werkzeuge zur Erstellung von PDFs