Was ist Moment.js?

Moment.js ist eine weit verbreitete JavaScript‑Bibliothek zum Parsen, Validieren, Manipulieren und Formatieren von Datumsangaben. Bevor moderne Alternativen entstanden, war Moment.js der de‑facto‑Standard für die Datumshandhabung in JavaScript‑Anwendungen. Sie bietet eine klare, kettenfähige API, die die Arbeit mit Datumswerten intuitiv und unkompliziert macht. Während neuere Bibliotheken wie date-fns und Luxon existieren, wird Moment.js nach wie vor stark in Legacy‑Codebases verwendet und aktiv für Bug‑Fixes gepflegt. Das Verständnis von Moment.js ist für Entwickler, die an bestehenden Projekten arbeiten, die darauf setzen, unerlässlich.

Warum eine Datums‑Manipulationsbibliothek verwenden?

Das native JavaScript‑Date‑Objekt ist notorisch schwer zu handhaben. Es weist inkonsistentes Verhalten in verschiedenen Browsern auf, verwirrende Monatsindizierung (0‑11 statt 1‑12), eingeschränkte Formatierungsoptionen und keinen integrierten Zeitzonen‑Support. Datumsbibliotheken wie Moment.js lösen diese Probleme, indem sie eine konsistente, gut dokumentierte API bereitstellen. Sie behandeln Sonderfälle wie Sommerzeit‑Umstellungen, Schaltjahre und lokalspezifische Formatierung automatisch und ersparen Entwicklern das Schreiben fehleranfälliger Datum‑Logik von Grund auf.

Werkzeugbeschreibung

Der Moment.js Playground ist eine interaktive, browserbasierte Umgebung zum Experimentieren mit der Moment.js‑Bibliothek. Schreiben und führen Sie JavaScript‑Code direkt im Editor aus, mit vollem Zugriff auf Moment.js und Moment Timezone. Der Playground führt Ihren Code automatisch beim Tippen aus (mit Debouncing) und zeigt sämtliche Konsolenausgaben in einem terminal‑ähnlichen Panel unten an. Ideal zum Lernen von Moment.js, Testen von Datumsformat‑Strings, Debuggen von Datumsberechnungen und Prototypisieren von zeitbezogener Logik, ohne eine Entwicklungsumgebung einrichten zu müssen.

Beispiele

Formatieren des aktuellen Datums:

const now = moment();
console.log(now.format("MMMM Do, YYYY"));
// Ausgabe: Dezember 30, 2025

console.log(now.format("dddd, h:mm A"));
// Ausgabe: Montag, 3:45 PM

Parsen verschiedener Datumsformate:

const date1 = moment("2025-12-25", "YYYY-MM-DD");
const date2 = moment("25/12/2025", "DD/MM/YYYY");
const date3 = moment("Dec 25, 2025", "MMM D, YYYY");

console.log(date1.format("dddd")); // Donnerstag
console.log(date2.isValid()); // true
console.log(date3.month()); // 11 (0‑indiziert)

Berechnen relativer Zeiten:

const past = moment().subtract(3, "days");
const future = moment().add(2, "weeks");

console.log(past.fromNow()); // vor 3 Tagen
console.log(future.fromNow()); // in 14 Tagen
console.log(past.from(future)); // vor 17 Tagen

Datumsarithmetik:

const date = moment("2025-01-15");

const nextMonth = date.clone().add(1, "month");
const lastWeek = date.clone().subtract(1, "week");
const endOfMonth = date.clone().endOf("month");

console.log(nextMonth.format("YYYY-MM-DD")); // 2025-02-15
console.log(lastWeek.format("YYYY-MM-DD")); // 2025-01-08
console.log(endOfMonth.format("YYYY-MM-DD")); // 2025-01-31

Arbeiten mit Zeitspannen:

const start = moment("2025-01-01");
const end = moment("2025-12-31");

const duration = moment.duration(end.diff(start));

console.log(duration.asDays() + " days"); // 364 days
console.log(duration.asWeeks() + " weeks"); // 52 weeks
console.log(duration.humanize()); // a year

Datumsvergleich:

const date1 = moment("2025-06-15");
const date2 = moment("2025-12-25");

console.log(date1.isBefore(date2)); // true
console.log(date1.isAfter(date2)); // false
console.log(date1.isSame(date2, "year")); // true
console.log(date1.isBetween("2025-01-01", "2025-08-01")); // true

Arbeiten mit Zeitzonen:

const now = moment();

console.log(now.tz("America/New_York").format("h:mm A z"));
console.log(now.tz("Europe/London").format("h:mm A z"));
console.log(now.tz("Asia/Tokyo").format("h:mm A z"));

Funktionen

  • Vollständige Moment.js‑Bibliothek: Zugriff auf alle Moment.js‑Funktionen inkl. Parsen, Formatieren, Manipulation und Vergleich
  • Zeitzonen‑Support: Moment Timezone ist vorab geladen für die Arbeit mit Zeitzonen weltweit
  • Live‑Code‑Ausführung: Code wird automatisch beim Tippen mit intelligentem Debouncing ausgeführt
  • Eingebautes Terminal: Konsolenausgabe sofort sichtbar, ohne die Entwickler‑Tools des Browsers zu öffnen
  • Syntax‑Highlighting: JavaScript‑Syntax‑Highlighting für bessere Lesbarkeit des Codes
  • Fehlerbehandlung: Laufzeitfehler werden klar im Terminal‑Output angezeigt

Anwendungsfälle

  • Moment.js lernen: Experimentieren Sie mit der API und sehen Sie sofortige Ergebnisse, ohne ein Projekt aufzusetzen
  • Format‑String‑Tests: Probieren Sie verschiedene Format‑Tokens aus, um exakt das gewünschte Datum zu erhalten
  • Debugging von Datumsberechnungen: Testen Sie komplexe Datumsarithmetik, bevor Sie sie in Ihre Anwendung integrieren
  • Zeitzonen‑Konvertierungen: Schnell Zeiten zwischen verschiedenen Zeitzonen umrechnen
  • Wartung von Legacy‑Code: Testen Sie Moment.js‑Code‑Snippets beim Pflegen bestehender Anwendungen

Häufige Format‑Tokens

Token Beschreibung Beispiel
YYYY 4‑stellige Jahreszahl 2025
YY 2‑stellige Jahreszahl 25
MM 2‑stelliger Monat 01‑12
MMM Kurzform des Monatsnamens Jan, Feb
MMMM Vollständiger Monatsname Januar
DD 2‑stelliger Tag 01‑31
Do Tag mit Ordnungszahl 1st, 2nd, 3rd
dddd Vollständiger Wochentagsname Montag
ddd Kurzform des Wochentags Mo
HH 24‑Stunden‑Stunde 00‑23
hh 12‑Stunden‑Stunde 01‑12
mm Minuten 00‑59
ss Sekunden 00‑59
A AM/PM (groß) AM, PM
a am/pm (klein) am, pm
z Zeitzonen‑Abkürzung EST, PST
Z Zeitzonen‑Offset +05:00

Häufige Methoden‑Referenz

Methode Beschreibung Beispiel
moment() Aktuellen Moment erzeugen moment()
format(string) In String formatieren moment().format("YYYY-MM-DD")
add(n, unit) Zeit hinzufügen moment().add(7, "days")
subtract(n, unit) Zeit subtrahieren moment().subtract(1, "month")
startOf(unit) Beginn der Einheit moment().startOf("week")
endOf(unit) Ende der Einheit moment().endOf("month")
fromNow() Relative Zeit moment("2025-01-01").fromNow()
diff(moment) Differenz momentA.diff(momentB, "days")
isBefore(moment) Ist vorher momentA.isBefore(momentB)
isAfter(moment) Ist nach momentA.isAfter(momentB)
isSame(moment, unit) Ist gleich momentA.isSame(momentB, "month")
isValid() Gültigkeit prüfen moment("invalid").isValid()
clone() Kopie erstellen moment().clone()
tz(zone) Zeitzone konvertieren moment().tz("America/New_York")

Zeiteinheiten

Moment.js unterstützt die folgenden Zeiteinheiten für add, subtract, startOf, endOf und diff‑Operationen:

  • years / y – Jahre
  • quarters / Q – Quartale
  • months / M – Monate
  • weeks / w – Wochen
  • days / d – Tage
  • hours / h – Stunden
  • minutes / m – Minuten
  • seconds / s – Sekunden
  • milliseconds / ms – Millisekunden