Start · Sprachen · JavaScript · Referenz · Temporal.PlainDateTime.prototype.calendarId

Temporal.PlainDateTime.prototype.calendarId

Eigenschaft

Liefert als String den Kalenderbezeichner, mit dem ein <code>Temporal.PlainDateTime</code> sein internes ISO-8601-Datum deutet, z. B. <code>"iso8601"</code> oder <code>"japanese"</code>.

seit JavaScript ES2026 (Temporal) – Firefox 139+, Chrome 144+; Saf Kategorie: method-property

Signatur

get Temporal.PlainDateTime.prototype.calendarId

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

Typ
string
Beschreibung
Der kanonische Kalenderbezeichner, z. B. "iso8601", "gregory" oder "japanese".

Beispiele

Standardkalender auslesen

const termin = Temporal.PlainDateTime.from("2024-03-15T10:30");
console.log(termin.calendarId);
console.log(termin.toString());
iso8601 2024-03-15T10:30:00

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());
japanese reiwa 6 2024-03-15T10:30:00[u-ca=japanese]

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);
hebrew 5784 M06L 5

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));
false false true

// Wichtig · Fallstricke

  • Nur lesbar: Wenn Sie der Eigenschaft einen Wert zuweisen, ändert sich nichts. Im Strict Mode wird ein TypeError ausgelöst. Den Kalender ändern Sie mit withCalendar(), das ein neues Objekt zurückgibt.
  • equals() vergleicht auch den Kalender: Zwei Objekte mit gleichem ISO-Datum, aber unterschiedlichem calendarId gelten als ungleich. Temporal.PlainDateTime.compare() ignoriert dagegen den Kalender.
  • Formatierung: toLocaleString() und Intl.DateTimeFormat lösen einen RangeError aus, wenn calendarId weder "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 bei toString() 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/polyfill oder temporal-polyfill. Ältere Polyfill-Versionen haben statt calendarId noch calendar.