Signatur
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
"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);
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
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");
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);
// Wichtig · Fallstricke
- Nur lesbar:
eraist ein Getter ohne Setter. Eine Zuweisung wird ignoriert und löst im Strict Mode einenTypeErroraus. Neue Werte setzen Sie mitwith({ era, eraYear }), wobei beide Felder zusammen angegeben werden müssen. - Standardkalender ohne Ären: Objekte ohne Kalender-Annotation verwenden
iso8601, und dort isteraimmerundefined. Prüfen Sie vor dem Anzeigen aufundefined. - Kennungen sind keine Anzeigetexte:
"ce"oder"reiwa"sind feste technische Kennungen und nicht übersetzt. Für die Ausgabe an Nutzer verwenden SietoLocaleString(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.