Signatur
Beschreibung
Die Methode toJSON() einer Temporal.PlainTime-Instanz gibt die Uhrzeit als String zurück, zum Beispiel "14:30:00" oder "09:05:07.123456789". Das Ergebnis ist identisch mit dem Aufruf von toString() ohne Argumente. Sekunden werden immer ausgegeben. Nachkommastellen erscheinen nur, wenn sie ungleich null sind, und zwar ohne Nullen am Ende.
Meist ruft man toJSON() nicht selbst auf. JSON.stringify() ruft die Methode automatisch auf, sobald ein PlainTime-Objekt in einer Datenstruktur vorkommt. So lassen sich Uhrzeiten ohne Zusatzaufwand in JSON umwandeln, etwa für REST-APIs, localStorage oder Konfigurationsdateien.
Die Umwandlung funktioniert nur in eine Richtung: JSON.parse() erzeugt kein Temporal.PlainTime-Objekt zurück. Dafür braucht man eine Reviver-Funktion, die Temporal.PlainTime.from() aufruft. Wer das Ausgabeformat steuern will, zum Beispiel ohne Sekunden, nimmt stattdessen toString(options).
Rückgabewert
HH:MM:SS[.fffffffff] nach RFC 9557 bzw. ISO 8601, also dasselbe Ergebnis wie toString().Beispiele
Direkter Aufruf
const zeit = Temporal.PlainTime.from('08:15');
console.log(zeit.toJSON());
const genau = Temporal.PlainTime.from({ hour: 23, minute: 59, second: 59, millisecond: 500 });
console.log(genau.toJSON());
Automatische Serialisierung mit JSON.stringify()
const oeffnungszeiten = {
laden: 'Filiale Mitte',
oeffnet: Temporal.PlainTime.from('09:00'),
schliesst: Temporal.PlainTime.from('18:30'),
};
console.log(JSON.stringify(oeffnungszeiten));
Rückweg mit Reviver-Funktion in JSON.parse()
const json = '{"termin":"Stand-up","beginn":"10:00:00"}';
const daten = JSON.parse(json, (key, value) =>
key === 'beginn' ? Temporal.PlainTime.from(value) : value
);
console.log(daten.beginn instanceof Temporal.PlainTime);
console.log(daten.beginn.add({ minutes: 15 }).toString());
Eigenes Format statt toJSON()
const zeit = Temporal.PlainTime.from('07:45:30.250');
// toJSON() gibt immer das Standardformat aus
console.log(zeit.toJSON());
// Für ein anderes Format toString() mit Optionen verwenden
console.log(zeit.toString({ smallestUnit: 'minute' }));
// Wichtig · Fallstricke
- Nur eine Richtung:
JSON.parse()gibt einen einfachen String zurück, keinPlainTime-Objekt. Für den Rückweg braucht man einen Reviver mitTemporal.PlainTime.from(). - Keine Optionen:
toJSON()nimmt keine Argumente entgegen. Argumente, dieJSON.stringify()intern übergibt (etwa den Schlüssel), werden ignoriert. Für Rundung oder eine feste Zahl von NachkommastellentoString({ fractionalSecondDigits, smallestUnit, roundingMode })verwenden. - Keine Zeitzone und kein Datum: Der String ist eine reine Uhrzeit. Wenn der Empfänger einen Zeitpunkt erwartet, besser
Temporal.ZonedDateTimeoderTemporal.Instantverwenden. - Nicht mit dem Vergleichsoperator vergleichen: Beim Vergleich mit
<bzw.>wirftvalueOf()einenTypeError. Für VergleicheTemporal.PlainTime.compare()verwenden. - Browser-Unterstützung: Temporal ist noch nicht in allen Umgebungen verfügbar: in Firefox ab 139 und Chrome ab 144, Safari bisher nur experimentell. Für breite Unterstützung einen Polyfill wie
@js-temporal/polyfillodertemporal-polyfilleinsetzen.