6 Punkte von GN⁺ 2026-01-13 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Die bestehende Unvollständigkeit und Inkonsistenz des Date-Objekts in JavaScript wird aufgezeigt, und als Ersatz wird die Temporal API vorgestellt
  • Date arbeitet als veränderbares Objekt (mutable object) und weicht damit vom eigentlichen Datumsbegriff ab; zudem gibt es Parsing-Fehler und Grenzen bei der Zeitzonenverarbeitung als strukturelle Probleme
  • Temporal bietet ein neues Modell zur Datums- und Zeitverarbeitung auf Basis von Unveränderlichkeit und umfasst fein aufgeteilte Klassen wie PlainDate, ZonedDateTime und Duration
  • Die Methoden von Temporal verändern bestehende Objekte nicht, sondern geben neue Objekte zurück, wodurch klare und sichere Chaining-Operationen möglich werden
  • Temporal befindet sich derzeit in Standardisierungsstufe 3 (Stage 3) und wird in modernen Browsern wie Chrome und Firefox experimentell unterstützt

Probleme mit dem Date-Objekt in JavaScript

  • Der Date-Konstruktor sorgt mit uneinheitlichen Parsing-Regeln und nicht intuitiver Indizierung für Verwirrung
    • Beispiel: Der Monat beginnt bei 0, während Tag und Jahr bei 1 beginnen
    • Die Zeichenkette "99" wird als Jahr 1999 interpretiert, "100" dagegen als Jahr 0100 — es fehlt also an Konsistenz
  • Date ist auf Zeit (time) zentriert und speichert intern einen Unix-Timestamp (in Millisekunden)
  • Die Unterstützung für Zeitzonen (time zones) ist eingeschränkt; Sommerzeit (DST) oder nicht-gregorianische Kalender werden nicht erkannt
  • Aufgrund dieser Grenzen ist die Abhängigkeit von großen Drittanbieter-Bibliotheken wie Moment.js oder date-fns verbreitet, was zu Leistungseinbußen führt

Konflikt zwischen Unveränderlichkeit und Referenzkonzept

  • Primitive Werte in JavaScript sind unveränderlich und werden als Werte selbst gespeichert, während Objekte (objects) als Referenzen gespeichert und veränderbar sind
  • Date ist ein über einen Konstruktor (constructor) erzeugtes Objekt und daher veränderbar
    • Beispiel: Bei Aufrufen von setMonth() oder setDate() wird das Originalobjekt direkt verändert
  • Dadurch kommt es zwischen Variablen, die auf dasselbe Objekt verweisen, zu unerwarteten Wertänderungen
    • Beispiel: Wenn eine Funktion today als Argument erhält und intern das Datum verändert, wird auch das ursprüngliche today verändert

Temporal: eine neue Datums- und Zeit-API

  • Temporal ist kein Konstruktor, sondern ein Namespace-Objekt (namespace object) mit einer Math ähnlichen Struktur
    • Wichtige Bestandteile: PlainDate, PlainDateTime, PlainTime, ZonedDateTime, Duration, Now usw.
  • Temporal.Now liefert den aktuellen Zeitpunkt in verschiedenen Formen zurück
    • plainDateISO() → Datum im ISO-Format
    • zonedDateTimeISO() → Zeitpunkt inklusive Zeitzone
  • Temporal-Objekte bieten ein klar definiertes Methodensystem
    • Mit add({ days: 1 }), subtract({ years: 2 }) usw. lassen sich Operationen mit expliziten Einheiten ausführen
    • Bestehende Objekte werden nicht verändert, stattdessen wird ein neues Objekt zurückgegeben, wodurch die Unveränderlichkeit erhalten bleibt

Funktionsweise und Vorteile von Temporal

  • Temporal-Objekte sind weiterhin Objekte, folgen aber einem beabsichtigt unveränderlichen Nutzungsmuster
    • Beispiel: today.add({ days: 1 }) gibt ein neues Datumsobjekt zurück, während das ursprüngliche today unverändert bleibt
  • Gegenüber Date bietet Temporal eine knappere und klarere Syntax
    • Beispiel:
      const today = Temporal.Now.plainDateISO();  
      console.log(`Tomorrow will be ${ today.add({ days: 1 }) }. Today is ${ today }.`);  
      // 결과: Tomorrow will be 2026-01-01. Today is 2025-12-31.  
      
  • Anforderungen wie Angabe von Zeitzonen, Berechnung von Zeitspannen und Beibehaltung des ISO-Formats werden modern umgesetzt
  • Mit Method Chaining über add, subtract, since, until usw. lassen sich komplexe Datumsberechnungen kompakt ausdrücken

Stand der Standardisierung und Ausblick

  • Temporal hat Stufe 3 (Stage 3) des ECMAScript-Vorschlagsprozesses erreicht, ein Zustand, in dem Browser-Implementierungen empfohlen werden
  • In Chrome und Firefox hat die experimentelle Unterstützung bereits begonnen; andere Browser sollen folgen
  • Entwickler können sich schon jetzt durch Tests und Feedback an der Verbesserung der Spezifikation beteiligen
  • Date wird zwar weiterhin existieren, doch künftig dürfte sich Temporal als Standard für die Datumsverarbeitung etablieren
  • Der Artikel schließt mit dem Hinweis, man hätte es „1995 ersetzen sollen, aber selbst jetzt ist Temporal.Now der richtige Zeitpunkt“

Noch keine Kommentare.

Noch keine Kommentare.