Signatur
Beschreibung
Die Methode toString() wandelt ein Temporal.PlainDate in einen maschinenlesbaren String der Form JJJJ-MM-TT um. Das Format folgt RFC 9557, einer Erweiterung von ISO 8601 bzw. RFC 3339, die zusätzliche Angaben in eckigen Klammern erlaubt, etwa den Kalender ([u-ca=japanese]).
Die Ausgabe ist umkehrbar: Temporal.PlainDate.from(date.toString()) ergibt wieder ein gleichwertiges Datum. Deshalb eignet sich die Methode für die Serialisierung, z. B. in JSON, URL-Parametern, Datenbankfeldern oder dem Attribut value von <input type="date">. Wenn ein String erwartet wird, etwa in Template-Literalen oder bei String(date), wird toString() automatisch aufgerufen. toJSON() liefert dasselbe Ergebnis wie toString() ohne Optionen.
Mit der Option calendarName legst du fest, ob der Kalender im String angegeben wird. Im Normalfall ("auto") wird er nur bei Kalendern ungleich iso8601 angehängt. Für Texte, die Menschen lesen sollen, verwende stattdessen toLocaleString().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $options | object | undefined | Optionales Objekt mit folgender Eigenschaft: |
| $options.calendarName | "auto" | "always" | "never" | "critical" | "auto" | Legt fest, ob die Kalender-Annotation ausgegeben wird.
|
Rückgabewert
"2024-03-15" oder "2024-03-15[u-ca=japanese]".Beispiele
Standardausgabe eines Datums
const date = Temporal.PlainDate.from({ year: 2024, month: 3, day: 5 });
console.log(date.toString());
console.log(`Termin: ${date}`); // toString() wird automatisch aufgerufen
Kalender-Annotation mit calendarName steuern
const iso = Temporal.PlainDate.from("2021-08-01");
const jp = iso.withCalendar("japanese");
console.log(iso.toString()); // auto
console.log(iso.toString({ calendarName: "always" }));
console.log(iso.toString({ calendarName: "critical" }));
console.log(jp.toString()); // auto, Nicht-ISO-Kalender
console.log(jp.toString({ calendarName: "never" }));
Umkehrbare Serialisierung (JSON, URL, Formularfeld)
const start = Temporal.Now.plainDateISO().add({ days: 7 });
// Für das Formularfeld <input type="date">
const value = start.toString();
// Als URL-Parameter
const params = new URLSearchParams({ from: start.toString() });
// Wieder einlesen
const parsed = Temporal.PlainDate.from(params.get("from"));
console.log(parsed.equals(start));
console.log(JSON.stringify({ start }) === `{"start":"${value}"}`);
Jahre außerhalb von 0000–9999
console.log(Temporal.PlainDate.from({ year: 12345, month: 1, day: 1 }).toString());
console.log(Temporal.PlainDate.from({ year: -44, month: 3, day: 15 }).toString());
// Wichtig · Fallstricke
- Browser-Unterstützung: Temporal ist neu. Es ist in Firefox ab 139 und in Chromium-Browsern ab 144 verfügbar, in Safari aber noch nicht. Prüfe mit
typeof Temporal !== "undefined", ob es vorhanden ist, oder setze ein Polyfill ein (z. B.@js-temporal/polyfillodertemporal-polyfill). - Bei
calendarName: "never"geht in einem Nicht-ISO-Kalender die Kalenderangabe verloren. Beim erneuten Einlesen mitfrom()entsteht dann ein ISO-Datum. Für verlustfreie Speicherung bleib beim Normalfall"auto". - Jahre vor 0000 oder nach 9999 werden sechsstellig mit Vorzeichen ausgegeben (
+012345,-000044). Manche Systeme außerhalb von JavaScript verstehen dieses Format nicht. - Ein ungültiger Wert für
calendarNamelöst einenRangeErroraus. Istoptionsweder ein Objekt nochundefined, wird einTypeErrorausgelöst. - Die Ausgabe ist nicht an die Sprache oder Region angepasst. Für Anzeigen wie „5. März 2024“ verwende
toLocaleString()oderIntl.DateTimeFormat.