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

Temporal.PlainDateTime.prototype.era

Eigenschaft

Gibt die Ära eines <code>Temporal.PlainDateTime</code> als kleingeschriebenen, kalenderabhängigen String zurück, z. B. <code>"ce"</code> oder <code>"reiwa"</code>. Ohne Ären im Kalender ist der Wert <code>undefined</code>.

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

Signatur

get Temporal.PlainDateTime.prototype.era

Beschreibung

Die Accessor-Eigenschaft era liefert die Ära (Zeitrechnungsepoche), in der das Datum eines Temporal.PlainDateTime liegt. Welche Werte möglich sind, hängt vom Kalender ab. Im gregorianischen Kalender (gregory) sind es "ce" (nach Christus) und "bce" (vor Christus). Der japanische Kalender kennt Ären wie "reiwa", "heisei" oder "showa". Der Wert ist immer kleingeschrieben.

Der Standardkalender iso8601 hat keine Ären. Hier gibt era undefined zurück, genau wie eraYear. Die Eigenschaft ist also nur nützlich, wenn Sie mit einem anderen Kalender arbeiten, etwa über den Annotations-Suffix [u-ca=gregory] oder mit withCalendar().

era kommt fast immer zusammen mit eraYear zum Einsatz. Erst beide zusammen beschreiben das Jahr in der Zählweise des Kalenders, z. B. „Reiwa 6“ oder „2022 v. Chr.“. Das Feld year dagegen zählt fortlaufend und kann null oder negativ werden. Für die Anzeige für Nutzer ist meist toLocaleString() mit der Option era besser als ein selbst gebauter Text.

Rückgabewert

Typ
string | undefined
Beschreibung
Kleingeschriebene Kennung der Ära (z. B. "ce", "bce", "reiwa") oder undefined, wenn der Kalender keine Ären verwendet (z. B. iso8601, chinese).

Beispiele

ISO-Kalender im Vergleich zum gregorianischen Kalender

const iso = Temporal.PlainDateTime.from("2021-07-01T12:34:56");
console.log(iso.calendarId, iso.era, iso.eraYear);

const greg = Temporal.PlainDateTime.from("2021-07-01T12:34:56[u-ca=gregory]");
console.log(greg.calendarId, greg.era, greg.eraYear);
iso8601 undefined undefined gregory ce 2021

Datum vor Christus: era und eraYear im Vergleich zu year

// ISO-Jahr -2021 entspricht 2022 v. Chr. (es gibt kein Jahr 0)
const antik = Temporal.PlainDateTime.from("-002021-07-01T00:00[u-ca=gregory]");
console.log(antik.year);    // fortlaufend
console.log(antik.era);     // Ära
console.log(antik.eraYear); // Jahr innerhalb der Ära
-2021 bce 2022

Wechsel der japanischen Ära erkennen

const vorher = Temporal.PlainDateTime.from("2019-04-30T23:59[u-ca=japanese]");
const nachher = vorher.add({ minutes: 1 });

console.log(`${vorher.era} ${vorher.eraYear}`);
console.log(`${nachher.era} ${nachher.eraYear}`);
console.log(vorher.era !== nachher.era ? "Neue Ära begonnen" : "Gleiche Ära");
heisei 31 reiwa 1 Neue Ära begonnen

Datum über era und eraYear ändern

const dt = Temporal.PlainDateTime.from("2024-03-15T10:00[u-ca=gregory]");
// era und eraYear müssen zusammen angegeben werden
const bc = dt.with({ era: "bce", eraYear: 44 });
console.log(bc.toString());
console.log(bc.era, bc.eraYear, bc.year);
-000043-03-15T10:00:00[u-ca=gregory] bce 44 -43

// Wichtig · Fallstricke

  • Nur lesbar: era ist ein Getter ohne Setter. Eine Zuweisung wird ignoriert und löst im Strict Mode einen TypeError aus. Neue Werte setzen Sie mit with({ era, eraYear }), wobei beide Felder zusammen angegeben werden müssen.
  • Standardkalender ohne Ären: Objekte ohne Kalender-Annotation verwenden iso8601, und dort ist era immer undefined. Prüfen Sie vor dem Anzeigen auf undefined.
  • Kennungen sind keine Anzeigetexte: "ce" oder "reiwa" sind feste technische Kennungen und nicht übersetzt. Für die Ausgabe an Nutzer verwenden Sie toLocaleString(locale, { era: \"long\" }) bzw. Intl.DateTimeFormat.
  • Aliasse: Bei der Eingabe über with() bzw. from() akzeptieren manche Implementierungen auch Aliasse wie "ad"/"bc". Zurückgegeben wird aber immer die kanonische Kennung.
  • Browser-Unterstützung: Temporal ist neu. Es ist verfügbar ab Firefox 139 und Chrome/Edge 144, in Safari noch nicht (Stand der Erstellung). Welche Kalender und Ären unterstützt werden, hängt außerdem von den Intl-Daten der Engine ab. Für ältere Umgebungen gibt es das Polyfill @js-temporal/polyfill.