Signatur
Beschreibung
Temporal.Instant.from() ist die übliche Fabrikmethode, um einen exakten Zeitpunkt ohne Kalender und ohne Zeitzone zu erzeugen. Typisch ist das Einlesen von Zeitstempeln aus APIs, Logdateien oder Datenbanken, etwa "2024-03-15T12:30:00Z" oder "2024-03-15T14:30:00+02:00".
Ein String muss einen UTC-Offset enthalten, also Z oder ±HH:MM. Nur so lässt er sich eindeutig auf einen Zeitpunkt abbilden. Annotationen in eckigen Klammern wie [Europe/Berlin] oder [u-ca=gregory] sind erlaubt, werden aber für die Berechnung nicht verwendet. Entscheidend ist allein der Offset.
Übergibst du ein Temporal.Instant, entsteht eine unabhängige Kopie. Bei einem Temporal.ZonedDateTime wird dessen exakter Zeitpunkt übernommen. Alle anderen Werte werden zuerst in einen String umgewandelt und dann geparst.
Hast du den Zeitpunkt als Zahl vorliegen, sind Temporal.Instant.fromEpochMilliseconds() oder Temporal.Instant.fromEpochNanoseconds() die passenden Alternativen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $info Pflicht | string | Temporal.Instant | Temporal.ZonedDateTime | Ein RFC-9557-/ISO-8601-String mit Datum, Uhrzeit und Offset (Z oder ±HH:MM) oder ein vorhandenes Temporal.Instant bzw. Temporal.ZonedDateTime. Andere Objekte werden per toString() in einen String umgewandelt. |
Rückgabewert
Temporal.Instant für den exakten Zeitpunkt, auf Nanosekunden genau.Beispiele
Zeitstempel mit Offset einlesen
const a = Temporal.Instant.from("2024-03-15T12:30:00Z");
const b = Temporal.Instant.from("2024-03-15T14:30:00+02:00");
console.log(a.toString());
console.log(b.toString());
console.log(a.equals(b)); // gleicher Zeitpunkt
Annotationen werden ignoriert, der Offset zählt
const i = Temporal.Instant.from("2024-07-01T10:00:00.123456789+02:00[Europe/Berlin]");
console.log(i.toString());
console.log(i.epochMilliseconds);
Eingaben aus einer API sicher parsen
const parseInstant = (value) => {
try {
return Temporal.Instant.from(value);
} catch (err) {
console.warn(`Ungültiger Zeitstempel: ${value} (${err.name})`);
return null;
}
};
const events = ["2024-05-02T08:00:00Z", "2024-05-01", "2024-05-01T23:15:00-04:00"];
const sorted = events
.map(parseInstant)
.filter(Boolean)
.sort(Temporal.Instant.compare);
console.log(sorted.map(String));
Kopie aus Instant oder ZonedDateTime
const zdt = Temporal.ZonedDateTime.from("2024-12-24T18:00:00+01:00[Europe/Berlin]");
const fromZdt = Temporal.Instant.from(zdt);
const copy = Temporal.Instant.from(fromZdt);
console.log(fromZdt.toString());
console.log(copy === fromZdt, copy.equals(fromZdt));
// Wichtig · Fallstricke
- Ein Offset ist Pflicht: Strings ohne
Zbzw.±HH:MMwie"2024-05-01T10:00"lösen einenRangeErroraus. Eine Zeitzonen-Annotation allein reicht nicht. In diesem Fall nimmst duTemporal.ZonedDateTime.from()und danach.toInstant(). - Ein
RangeErrortritt auch bei ungültigen Datumsangaben auf, zum Beispiel beim 30. Februar, oder bei Zeitpunkten außerhalb des erlaubten Bereichs von ±108 Tagen um die Unix-Epoche. Ungeeignete Typen wienumberodernullführen zu einemTypeError. - Anders als
Date.parse()ist das Parsen streng und in allen Umgebungen gleich. Es werden keine Formate erraten. - Werte in eckigen Klammern, etwa die Zeitzone oder der Kalender, gehen verloren. Willst du die Zeitzone behalten, verwende
Temporal.ZonedDateTime. - Kompatibilität: Temporal ist noch nicht überall verfügbar, derzeit in Firefox 139+ und Chrome/Edge 144+. In anderen Umgebungen brauchst du einen Polyfill wie
@js-temporal/polyfillodertemporal-polyfill. Prüfen kannst du das mittypeof Temporal !== "undefined".