Arbeiten mit Daten in TypeScript: Überblick über die Bibliotheken date-fns, Luxon und Day.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

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-fns


Anwendungsbeispiele 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}`); // true


Vorteile

  • 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 luxon

Für TypeScript kann die Installation von Typen erforderlich sein:

npm install --save-dev @types/luxon


Anwendungsbeispiele 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

Empfehlungen