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

Temporal.PlainYearMonth.prototype.era

Eigenschaft

Gibt die kalenderspezifische Ära eines <code>Temporal.PlainYearMonth</code> als Kleinbuchstaben-String zurück, oder <code>undefined</code>, wenn der Kalender keine Ären kennt.

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

Signatur

get Temporal.PlainYearMonth.prototype.era

Beschreibung

Die Accessor-Eigenschaft era liefert die Ära, zu der das Jahr eines Temporal.PlainYearMonth-Objekts gehört. Der Wert hängt vom Kalender ab: Im gregorianischen Kalender (gregory) ist das "ce" (unsere Zeitrechnung) oder "bce" (vor unserer Zeitrechnung), im japanischen Kalender z. B. "reiwa", "heisei" oder "showa".

Im Standardkalender iso8601 gibt es keine Ären. Dort ist era immer undefined, und das Jahr wird als fortlaufende Zahl mit Jahr 0 und negativen Jahren angegeben (proleptisches Jahr, siehe year).

era wird fast immer zusammen mit eraYear verwendet: Erst beide Werte zusammen ergeben die Jahresangabe innerhalb der Ära (z. B. „Reiwa 3“). Für eindeutige Berechnungen und Vergleiche verwendet man dagegen year, weil diese Zahl über Äragrenzen hinweg monoton steigt.

Die Eigenschaft ist schreibgeschützt. Um die Ära zu ändern, erzeugt man mit with({ era, eraYear }) ein neues Objekt. Für die Anzeige für Nutzer ist toLocaleString() bzw. Intl.DateTimeFormat meist besser geeignet als eine selbst zusammengesetzte Ausgabe.

Rückgabewert

Typ
string | undefined
Beschreibung
Kalenderspezifischer Ära-Bezeichner in Kleinbuchstaben (z. B. "ce", "bce", "reiwa") oder undefined, wenn der Kalender keine Ären verwendet (z. B. iso8601).

Beispiele

ISO-Kalender im Vergleich zu Kalendern mit Ären

const iso = Temporal.PlainYearMonth.from("2021-07");
console.log(iso.calendarId, iso.era);

const greg = Temporal.PlainYearMonth.from("2021-07-01[u-ca=gregory]");
console.log(greg.calendarId, greg.era, greg.eraYear);

const jap = Temporal.PlainYearMonth.from("2021-07-01[u-ca=japanese]");
console.log(jap.calendarId, jap.era, jap.eraYear);
iso8601 undefined gregory ce 2021 japanese reiwa 3

Jahr vor unserer Zeitrechnung über era und eraYear angeben

// März 44 v. Chr. (Iden des März)
const iden = Temporal.PlainYearMonth.from({
  calendar: "gregory",
  era: "bce",
  eraYear: 44,
  month: 3,
});

console.log(iden.era);     // Ära
console.log(iden.eraYear); // Jahr innerhalb der Ära
console.log(iden.year);    // proleptisches Jahr (mit Jahr 0)
bce 44 -43

Jahresangabe mit Ära formatieren, mit Rückfall auf year

const formatJahr = (ym) =>
  ym.era === undefined
    ? `${ym.year}`
    : `${ym.era.toUpperCase()} ${ym.eraYear}`;

const werte = [
  Temporal.PlainYearMonth.from("2019-04"),
  Temporal.PlainYearMonth.from("2019-04-01[u-ca=japanese]"),
  Temporal.PlainYearMonth.from("2019-05-01[u-ca=japanese]"),
];

werte.forEach((ym) => console.log(formatJahr(ym)));
2019 HEISEI 31 REIWA 1

Ära wechseln mit with()

const ym = Temporal.PlainYearMonth.from("2024-06-01[u-ca=japanese]");
console.log(ym.era, ym.eraYear);

// Neues Objekt: Heisei 10, gleicher Monat
const frueher = ym.with({ era: "heisei", eraYear: 10 });
console.log(frueher.era, frueher.eraYear, frueher.year);
reiwa 6 heisei 10 1998

// Wichtig · Fallstricke

  • Schreibgeschützt: era hat nur einen Getter. Eine Zuweisung wie ym.era = \"bce\" bleibt ohne Wirkung (im Strict Mode gibt es einen TypeError). Zum Ändern verwendet man with().
  • Im ISO-Kalender immer undefined: Temporal.PlainYearMonth.from(\"2021-07\") nutzt iso8601. Code, der blind ym.era.toUpperCase() aufruft, stürzt dort ab. Prüfen Sie deshalb immer auf undefined.
  • Ära-Bezeichner sind nicht zur Anzeige gedacht: Es sind technische Codes (z. B. \"bce\"), keine übersetzten Texte. Für lokalisierte Ausgaben nutzt man toLocaleString() mit passender Locale.
  • Nicht zum Rechnen verwenden: Für Vergleiche und Sortierung eignet sich year oder Temporal.PlainYearMonth.compare(), nicht die Kombination aus era und eraYear.
  • Spezifikation noch im Fluss: Frühe Polyfills bzw. Engine-Versionen lieferten im gregorianischen Kalender teils andere Codes (z. B. \"gregory\"/\"gregory-inverse\" statt \"ce\"/\"bce\"). Aliasse wie \"ad\"/\"bc\" werden bei der Eingabe teilweise akzeptiert.
  • Kompatibilität: Temporal ist noch neu (nativ ab Firefox 139 und Chrome/Edge 144, Safari bislang nicht bzw. nur hinter Flag). Für breite Unterstützung empfiehlt sich ein Polyfill wie @js-temporal/polyfill oder temporal-polyfill.