Signatur
Beschreibung
Temporal.PlainDateTime.from() ist der empfohlene Weg, ein Datum mit Uhrzeit ohne Zeitzone zu erzeugen. Anders als beim Konstruktor new Temporal.PlainDateTime() übergeben Sie keine Liste von Argumenten in fester Reihenfolge. Die Methode nimmt drei Arten von Eingaben an: eine Zeichenkette (z. B. aus einem <input type="datetime-local">), ein Objekt mit benannten Feldern wie year, month, day und hour oder ein vorhandenes Temporal-Objekt.
Übergeben Sie ein Temporal.PlainDateTime, entsteht eine Kopie. Bei einem Temporal.PlainDate wird die Uhrzeit auf Mitternacht gesetzt. Bei einem Temporal.ZonedDateTime werden Datum und Uhrzeit in dessen Zeitzone übernommen. Bei Objekten mit Feldern sind year, month bzw. monthCode und day Pflicht. Fehlende Zeitfelder (hour bis nanosecond) werden zu 0. Über calendar lässt sich ein anderer Kalender als ISO 8601 angeben.
Mit der Option overflow legen Sie fest, was bei ungültigen Werten in einem Objekt passiert, etwa beim 30. Februar. Mit "constrain" (Standard) wird der Wert auf den nächsten gültigen Wert begrenzt. Mit "reject" wird ein RangeError geworfen. Ungültige Zeichenketten führen immer zu einem Fehler.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $info Pflicht | string | Object | Temporal.PlainDateTime | Temporal.PlainDate | Temporal.ZonedDateTime | Die Eingabe. Möglich sind eine Zeichenkette im Format RFC 9557/ISO 8601 (z. B. "2024-03-15T14:30"), ein Objekt mit den Feldern year, month/monthCode, day, optional hour, minute, second, millisecond, microsecond, nanosecond, era/eraYear und calendar oder ein Temporal-Objekt. |
|
| $options | Object | {} | Optionales Einstellungsobjekt. |
| $options.overflow | "constrain" | "reject" | "constrain" | Verhalten bei Werten außerhalb des gültigen Bereichs. "constrain" begrenzt den Wert auf den nächsten gültigen Wert, "reject" wirft einen RangeError. Gilt nur für Objekte als Eingabe. |
Rückgabewert
Temporal.PlainDateTime-Objekt.Beispiele
Aus einer ISO-Zeichenkette erzeugen
const termin = Temporal.PlainDateTime.from("2024-03-15T14:30:00");
console.log(termin.toString());
console.log(termin.hour, termin.minute);
// Offset und Zeitzonen-Angabe werden ignoriert
const mitOffset = Temporal.PlainDateTime.from("2024-03-15T14:30:00+01:00[Europe/Berlin]");
console.log(mitOffset.toString());
Aus einem Objekt mit Feldern erzeugen
const start = Temporal.PlainDateTime.from({
year: 2024,
month: 1,
day: 31,
hour: 9,
minute: 15
});
console.log(start.toString());
// Einen Monat später: der Tag wird automatisch begrenzt
console.log(start.add({ months: 1 }).toString());
Ungültige Werte: constrain und reject
const eingabe = { year: 2023, month: 2, day: 30, hour: 12 };
console.log(Temporal.PlainDateTime.from(eingabe).toString());
try {
Temporal.PlainDateTime.from(eingabe, { overflow: "reject" });
} catch (err) {
console.log(err.name);
}
Wert aus einem datetime-local-Feld auslesen
const feld = document.querySelector('input[type="datetime-local"]');
feld.addEventListener("change", () => {
if (!feld.value) return;
// feld.value hat z. B. das Format "2024-06-01T18:45"
const zeitpunkt = Temporal.PlainDateTime.from(feld.value);
const ende = zeitpunkt.add({ hours: 2 });
console.log(`Von ${zeitpunkt.toLocaleString("de-DE")} bis ${ende.toLocaleString("de-DE")}`);
});
// Wichtig · Fallstricke
- Browser-Unterstützung: Temporal ist erst seit Kurzem verfügbar (Firefox 139+, Chrome/Edge 144+). Safari und Node.js unterstützen es noch nicht standardmäßig. Für den Produktiveinsatz verwenden Sie einen Polyfill wie
@js-temporal/polyfillodertemporal-polyfill. - Keine Zeitzone: Ein
PlainDateTimestellt keinen genauen Zeitpunkt dar. Offsets wie+01:00und Angaben wie[Europe/Berlin]in der Zeichenkette werden ignoriert. Zeichenketten mit dem UTC-KennzeichenZ(z. B.\"2024-03-15T14:30Z\") lösen einenRangeErroraus. Solche Werte lesen Sie mitTemporal.Instant.from()ein, oder Sie verwendenTemporal.ZonedDateTime. - Kalender-Angabe wird beachtet: Eine Angabe wie
[u-ca=japanese]wird übernommen und nicht verworfen. - overflow nur für Objekte: Bei Zeichenketten ist
overflow: \"constrain\"wirkungslos.\"2023-02-30T00:00\"wirft immer einenRangeError. - Stilles Korrigieren: Der Standardwert
\"constrain\"kann Eingabefehler von Nutzern unbemerkt verändern. Bei der Prüfung von Formulareingaben ist\"reject\"meist die bessere Wahl. - Ein
Date-Objekt wird nicht direkt akzeptiert. Der Umweg führt überdate.toTemporalInstant().toZonedDateTimeISO(zeitzone).toPlainDateTime().