Diese Woche haben wir Philipp Dunkel (Bluesky) zu Gast und sprechen mit ihm über Temporal, also die neue JavaScript-API für Datum, Uhrzeit, Zeitspannen und Zeitzonen. Aufhänger ist ein Vortrag von Jason Williams auf der State of the Browser, von dem aus wir in die Geschichte, die Designprinzipien und die praktische Modellierung von Zeit in JavaScript einsteigen.
Unser Sponsor
Alle reden von Automation – aber wo betreibst du eigentlich deine Tools?
Egal ob n8n oder andere Container-Setups: Mit dem Container-Hosting von mittwald läuft deine Anwendung in wenigen Minuten. Die nervige Konfiguration? Geht easy von der Hand – inklusive Vorschlägen für Umgebungsvariablen und Entrypoints.
Also: Fang an zu automatisieren. Dein erster Schritt ist ein Hosting bei mittwald. 👉 mittwald.de/workingdraft
Dabei geht es nicht nur um einen Ersatz für das alte Date-Objekt, sondern auch um die lange Vorgeschichte mit Libraries wie Moment.js, Luxon und date-fns, um die Rolle von Intl und ECMA 402 sowie um die vielen politischen, technischen und semantischen Fallstricke, die bei Datum und Uhrzeit eben dranhängen.
Shownotes
[00:00:54]
Temporal
Temporal ist ein neuer API-Komplex für Datum, Uhrzeit, Zeitpunkte, Intervalle und Zeitzonen in JavaScript. Dabei soll es nicht einfach nur ein „besseres Date“ sein. Das bisherige Date-Objekt wird als historisch gewachsener Fehlgriff gesehen, der auf einem frühen, aus Java übernommenen Modell basiert und bis heute viele Probleme mit sich herumschleppt. In der Praxis führte das dazu, dass Entwicklerinnen und Entwickler auf Libraries wie
Moment.js,
Luxon und
date-fns ausweichen mussten. Gerade diese Erfahrungen aus der Library-Welt sind aber in Temporal eingeflossen: Die Maintainer und Champions rund um das Proposal, darunter auch
Maggie Johnson-Pint, haben über Jahre hinweg versucht, das Thema Zeit in JavaScript endlich semantisch sauber modellierbar zu machen.Ein zentraler Punkt ist dabei, dass Temporal unterschiedliche Konzepte nicht mehr in ein einziges Universalobjekt presst. Stattdessen gibt es getrennte Typen für das, was wir im Alltag tatsächlich unterscheiden: PlainTime für reine Uhrzeiten, PlainDate für reine Kalenderdaten, PlainDateTime für Datum plus Uhrzeit ohne Zeitzone, MonthDay für wiederkehrende Datumsangaben wie Weihnachten, YearMonth für Monatsangaben und Instant für einen exakten Zeitpunkt auf der