Start · Sprachen · JavaScript · Referenz · Temporal.PlainDateTime.from()

Temporal.PlainDateTime.from()

Methode

Erzeugt ein neues <code>Temporal.PlainDateTime</code> aus einem Temporal-Objekt, einem Objekt mit Datums- und Zeitfeldern oder einem Zeichenkette im Format RFC 9557/ISO 8601.

seit JavaScript Temporal (TC39 Stage 3) – Firefox 139+, Chrome/Edg Kategorie: method-property

Signatur

Temporal.PlainDateTime.from(info, options)

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

Typ
Temporal.PlainDateTime
Beschreibung
Ein neues, unveränderliches 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());
2024-03-15T14:30:00 14 30 2024-03-15T14:30:00

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());
2024-01-31T09:15:00 2024-02-29T09:15:00

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);
}
2023-02-28T12:00:00 RangeError

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")}`);
});
Von 1.6.2024, 18:45:00 bis 1.6.2024, 20:45:00

// 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/polyfill oder temporal-polyfill.
  • Keine Zeitzone: Ein PlainDateTime stellt keinen genauen Zeitpunkt dar. Offsets wie +01:00 und Angaben wie [Europe/Berlin] in der Zeichenkette werden ignoriert. Zeichenketten mit dem UTC-Kennzeichen Z (z. B. \"2024-03-15T14:30Z\") lösen einen RangeError aus. Solche Werte lesen Sie mit Temporal.Instant.from() ein, oder Sie verwenden Temporal.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 einen RangeError.
  • 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 über date.toTemporalInstant().toZonedDateTimeISO(zeitzone).toPlainDateTime().