Signatur
Beschreibung
Die Methode toJSON() liefert eine Textdarstellung einer Temporal.PlainMonthDay-Instanz. Das Ergebnis ist dasselbe wie bei toString() mit den Standardoptionen. Beim ISO-8601-Kalender hat der String das Format MM-DD, z. B. "02-29". Bei anderen Kalendern enthält der String zusätzlich das ISO-Referenzjahr und eine Kalender-Annotation, z. B. [u-ca=chinese].
Normalerweise ruft man toJSON() nicht selbst auf. JSON.stringify() ruft die Methode automatisch auf, sobald es auf ein PlainMonthDay-Objekt trifft. So lassen sich wiederkehrende Termine ohne Jahr serialisieren, etwa Geburtstage, Feiertage oder Jahrestage. Die Daten können dann an APIs geschickt oder im localStorage gespeichert werden.
Der umgekehrte Weg funktioniert nicht automatisch. JSON.parse() gibt nur einen String zurück und erzeugt kein PlainMonthDay-Objekt. Um das Objekt wiederherzustellen, verwendet man eine Reviver-Funktion zusammen mit Temporal.PlainMonthDay.from().
Rückgabewert
"12-24". Er ist identisch mit monthDay.toString().Beispiele
Einfacher Aufruf
const heiligabend = Temporal.PlainMonthDay.from({ month: 12, day: 24 });
console.log(heiligabend.toJSON());
console.log(heiligabend.toJSON() === heiligabend.toString());
// Der Schalttag funktioniert ebenfalls, weil kein Jahr gebunden ist
console.log(Temporal.PlainMonthDay.from("02-29").toJSON());
Automatische Serialisierung mit JSON.stringify()
const geburtstage = [
{ name: "Anna", tag: Temporal.PlainMonthDay.from({ month: 3, day: 14 }) },
{ name: "Ben", tag: Temporal.PlainMonthDay.from({ month: 11, day: 2 }) },
];
// JSON.stringify ruft toJSON() für jedes PlainMonthDay-Objekt auf
const json = JSON.stringify(geburtstage);
console.log(json);
Wiederherstellen mit einer Reviver-Funktion
const json = '{"name":"Tag der Einheit","datum":"10-03"}';
const feiertag = JSON.parse(json, (key, value) =>
key === "datum" ? Temporal.PlainMonthDay.from(value) : value
);
console.log(feiertag.datum instanceof Temporal.PlainMonthDay);
console.log(feiertag.datum.day);
// Das Datum im Jahr 2025 bestimmen
console.log(feiertag.datum.toPlainDate({ year: 2025 }).dayOfWeek);
// Wichtig · Fallstricke
- Keine automatische Rückumwandlung:
JSON.parse()liefert nur einen String. Um wieder ein Objekt zu erhalten, braucht man eine Reviver-Funktion mitTemporal.PlainMonthDay.from(). - Keine Parameter: Übergebene Argumente werden ignoriert. Wer die Ausgabe steuern will, verwendet
toString({ calendarName: \"always\" }). Für eine lesbare Ausgabe in der jeweiligen Sprache eignet sichtoLocaleString(). - Andere Kalender als ISO: Das Ergebnis enthält dann ein Referenzjahr und eine Kalender-Annotation, z. B.
…[u-ca=chinese]. Andere Systeme, die solche Strings lesen, müssen RFC 9557 unterstützen. - Kein Vergleich mit
</>:valueOf()wirft einenTypeError.PlainMonthDayhat außerdem keine statischecompare()-Methode. Für Gleichheit verwendet manequals(). - Kompatibilität: Temporal wird noch nicht überall unterstützt: Firefox ab 139, Chrome/Edge ab 144, Safari bisher nicht. Für ältere Umgebungen gibt es Polyfills wie
@js-temporal/polyfillodertemporal-polyfill.