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

Temporal.PlainDate.from()

Methode

Erstellt ein neues <code>Temporal.PlainDate</code> aus einem Temporal-Objekt, einem Objekt mit Datumsfeldern oder einem RFC-9557-String.

seit JavaScript TC39-Proposal Stage 3 · Firefox 139+, Chrome 144+; Kategorie: method-property

Signatur

Temporal.PlainDate.from(info, options)

Beschreibung

Temporal.PlainDate.from() ist der empfohlene Weg, ein Kalenderdatum ohne Uhrzeit und ohne Zeitzone zu erzeugen, etwa für Geburtstage, Feiertage, Fälligkeitsdaten oder Werte aus <input type="date">. Anders als der Konstruktor new Temporal.PlainDate(year, month, day) nimmt die Methode ganz unterschiedliche Eingaben an und wandelt sie einheitlich um.

Diese Eingaben sind möglich:

  • String im Format RFC 9557 bzw. ISO 8601, z. B. "2024-03-15", "2024-03-15T10:00:00+01:00[Europe/Berlin]" oder "2024-03-15[u-ca=japanese]". Uhrzeit, Offset und Zeitzonen-Angabe werden verworfen. Nur das Datum und eine eventuelle Kalender-Angabe werden übernommen.
  • Objekt mit Datumsfeldern wie year, month oder monthCode, day sowie optional era/eraYear und calendar.
  • Temporal-Objekte: Temporal.PlainDate, Temporal.PlainDateTime oder Temporal.ZonedDateTime. Übernommen wird der Datumsanteil.

Mit der Option overflow legst du fest, was bei ungültigen Feldwerten in einem Objekt passiert: Entweder wird der Wert in den gültigen Bereich gezogen ("constrain", Standard) oder es wird ein RangeError geworfen ("reject"). Für die Prüfung von Benutzereingaben ist "reject" meist die richtige Wahl.

Parameter

Name Typ Default Beschreibung
$info Pflicht string | object | Temporal.PlainDate | Temporal.PlainDateTime | Temporal.ZonedDateTime Die Quelle für das Datum. Ein Objekt braucht mindestens year (oder era + eraYear), month oder monthCode sowie day. Mit calendar wählst du einen Kalender, Standard ist "iso8601".
$options object {} Optionales Objekt mit Einstellungen.
$options.overflow "constrain" | "reject" "constrain" Legt fest, wie Werte außerhalb des gültigen Bereichs behandelt werden. "constrain" zieht sie auf den nächsten gültigen Wert (31. Februar wird zum letzten Februartag), "reject" wirft einen RangeError. Gilt nur für Objekt-Eingaben.

Rückgabewert

Typ
Temporal.PlainDate
Beschreibung
Ein neues Temporal.PlainDate-Objekt. Das gilt auch dann, wenn schon ein PlainDate übergeben wurde. Wirft einen TypeError, wenn info weder Objekt noch String ist oder Pflichtfelder fehlen, und einen RangeError bei ungültigen Strings, ungültigen Werten mit overflow: "reject" oder Daten außerhalb des darstellbaren Bereichs.

Beispiele

Datum aus ISO- und RFC-9557-Strings lesen

const a = Temporal.PlainDate.from("2024-03-15");
console.log(a.toString());

// Uhrzeit, Offset und Zeitzone werden verworfen
const b = Temporal.PlainDate.from("2024-03-15T23:30:00+01:00[Europe/Berlin]");
console.log(b.toString());
console.log(b.year, b.month, b.day, b.dayOfWeek);
2024-03-15 2024-03-15 2024 3 15 5

Objekt-Eingabe: constrain oder reject

// Standard: ungültiger Tag wird in den gültigen Bereich gezogen
const geklemmt = Temporal.PlainDate.from({ year: 2024, month: 2, day: 31 });
console.log(geklemmt.toString());

// Strikt: ungültige Werte führen zu einem Fehler
try {
  Temporal.PlainDate.from({ year: 2023, month: 2, day: 29 }, { overflow: "reject" });
} catch (err) {
  console.log(err instanceof RangeError);
}
2024-02-29 true

Eingabe aus einem Datumsfeld prüfen

// z. B. der Wert von <input type="date"> oder einem JSON-Feld
const parseDatum = (wert) => {
  try {
    return Temporal.PlainDate.from(wert, { overflow: "reject" });
  } catch {
    return null;
  }
};

const faellig = parseDatum("2024-12-24");
const heute = Temporal.PlainDate.from("2024-12-01");
console.log(Temporal.PlainDate.compare(heute, faellig));
console.log(heute.until(faellig).days);
console.log(parseDatum("24.12.2024"));
-1 23 null

Aus anderen Temporal-Objekten ableiten und kopieren

const termin = Temporal.ZonedDateTime.from("2024-06-01T09:00:00+02:00[Europe/Berlin]");
const tag = Temporal.PlainDate.from(termin);
console.log(tag.toString());

const kopie = Temporal.PlainDate.from(tag);
console.log(kopie === tag, kopie.equals(tag));

// Mit monthCode statt month
const d = Temporal.PlainDate.from({ year: 2025, monthCode: "M10", day: 3 });
console.log(d.toString());
2024-06-01 false true 2025-10-03