Signatur
Beschreibung
calendarId ist eine schreibgeschützte Zugriffseigenschaft von Temporal.PlainDateTime-Instanzen. Sie gibt den Kalender an, mit dem das Objekt Felder wie year, month, day, era oder monthCode berechnet. Intern speichert jedes PlainDateTime immer ein ISO-8601-Datum. Der Kalender legt nur fest, wie dieses Datum nach außen dargestellt wird.
Wenn Sie nichts anderes angeben, ist der Wert "iso8601". Andere Werte entstehen auf drei Wegen: mit withCalendar(), über die Option calendar bei Temporal.PlainDateTime.from() bzw. beim Konstruktor oder über eine Annotation wie [u-ca=hebrew] im ISO-String. Mögliche Werte sind z. B. "gregory", "japanese", "hebrew", "islamic-umalqura", "chinese" und "buddhist". Die Werte werden immer in ihrer kanonischen Form in Kleinbuchstaben zurückgegeben.
Nutzen Sie die Eigenschaft, wenn Sie prüfen möchten, in welchem Kalender ein Wert vorliegt. Das ist wichtig, bevor Sie Werte vergleichen oder serialisieren, Datumsobjekte in denselben Kalender bringen oder mit Intl.DateTimeFormat formatieren. Die Eigenschaft ersetzt die frühere Eigenschaft calendar, die ein Temporal.Calendar-Objekt zurückgab. Diese wurde aus dem Proposal entfernt.
Rückgabewert
"iso8601", "gregory" oder "japanese".Beispiele
Standardkalender auslesen
const termin = Temporal.PlainDateTime.from("2024-03-15T10:30");
console.log(termin.calendarId);
console.log(termin.toString());
Kalender wechseln und Ära anzeigen
const dt = Temporal.PlainDateTime.from("2024-03-15T10:30");
const jp = dt.withCalendar("japanese");
console.log(jp.calendarId);
console.log(jp.era, jp.eraYear);
// Kalender ≠ iso8601 wird im String als Annotation angegeben
console.log(jp.toString());
Kalender aus einem ISO-String übernehmen
const dt = Temporal.PlainDateTime.from("2024-03-15T10:30[u-ca=hebrew]");
console.log(dt.calendarId);
console.log(dt.year, dt.monthCode, dt.day);
Kalender vor dem Vergleich angleichen
const a = Temporal.PlainDateTime.from("2024-03-15T10:30");
const b = a.withCalendar("gregory");
// equals() berücksichtigt auch den Kalender
console.log(a.equals(b));
console.log(a.calendarId === b.calendarId);
// Beide Werte in denselben Kalender bringen
const angeglichen = a.withCalendar(b.calendarId);
console.log(angeglichen.equals(b));
// Wichtig · Fallstricke
- Nur lesbar: Wenn Sie der Eigenschaft einen Wert zuweisen, ändert sich nichts. Im Strict Mode wird ein
TypeErrorausgelöst. Den Kalender ändern Sie mitwithCalendar(), das ein neues Objekt zurückgibt. equals()vergleicht auch den Kalender: Zwei Objekte mit gleichem ISO-Datum, aber unterschiedlichemcalendarIdgelten als ungleich.Temporal.PlainDateTime.compare()ignoriert dagegen den Kalender.- Formatierung:
toLocaleString()undIntl.DateTimeFormatlösen einenRangeErroraus, wenncalendarIdweder"iso8601"ist noch zum Kalender des Formatierers passt. "iso8601"ist nicht dasselbe wie"gregory": Die Monats- und Tageswerte sind gleich."gregory"kennt aber Ären (era/eraYear) und wird beitoString()als Annotation ausgegeben.- Aliase werden in die kanonische Form umgewandelt, z. B. wird
"islamicc"zu"islamic-civil". Vergleichen Sie deshalb immer mit den kanonischen Namen. - Kompatibilität: Temporal ist erst in neueren Browsern verfügbar (Firefox 139+, Chrome 144+), in Safari noch nicht (Stand 2025). Für ältere Umgebungen gibt es Polyfills wie
@js-temporal/polyfillodertemporal-polyfill. Ältere Polyfill-Versionen haben stattcalendarIdnochcalendar.