Signatur
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,monthodermonthCode,daysowie optionalera/eraYearundcalendar. - Temporal-Objekte:
Temporal.PlainDate,Temporal.PlainDateTimeoderTemporal.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
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);
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);
}
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"));
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());