Temporal.PlainDate.prototype.era
Базовый уровень Ограниченная доступность
Эта функция не является базовым уровнем, так как она не работает в некоторых наиболее широко используемых браузерах.
Доступное для чтения свойство era экземпляров Temporal.PlainDate возвращает специфическую для календаря строку в нижнем регистре, представляющую эпоху этой даты, или undefined, если календарь не использует эпохи (например, ISO 8601). era и eraYear вместе однозначно идентифицируют год в календаре, так же, как year. Это зависит от календаря. Для григорианского календаря это либо "ce", либо "bce".
Значение
Все указанные календари имеют эпохи, полностью определенные спецификацией.
- Следующие календари имеют одну эпоху:
-
buddhist:"be" -
coptic:"am" -
ethioaa:"aa" -
hebrew:"am" -
indian:"shaka" -
persian:"ap"
-
- Следующие календари имеют две эпохи. Одна — это *эпоха начала отсчета*, в которой
eraYearначинается с 1 и совпадает сyear. Другая — это обратная эпоха, в которойeraYearтакже начинается с 1 и равна1 - year(так чтоeraYear: 1соответствует году0,eraYear: 2— году-1и т. д.):-
gregory: эпоха начала отсчета"ce", обратная эпоха"bce" -
islamic-civil,islamic-tbla,islamic-umalqura: эпоха начала отсчета"ah", обратная эпоха"bh" -
roc: эпоха начала отсчета"roc", обратная эпоха"broc"
-
- Календарь
ethiopicимеет"am"эпоху, которая является эпохой начала отсчета. Годы до1относятся к"aa"эпохе, у которойeraYearравнаyear - 5500(так чтоeraYear: -1000соответствует году-6500,eraYear: 1— году-5499, вплоть доeraYear: 5500как года0). -
Календарь
japaneseдобавляет эпоху для каждого нового императора, поэтому выходной год и эпоха для будущей даты могут не совпадать с входным годом и эпохой, когда ваш код будет выполняться на будущей версии движка, и мы не будем перечислять их здесь. Год каждой эпохи начинается с 1. Это также единственный известный календарь, у которого эпохи начинаются в середине года, что означает, что один и тот жеyearможет соответствовать разным парам(era, eraYear)в зависимости от месяца и дня.Предупреждение: По состоянию на октябрь 2025 года в календаре
japaneseдаты до 1868-10-23 ISO (дата начала 1 года эпохи Мэйдзи) работают некорректно в браузерах двумя способами. Во-первых, CLDR содержал неверную дату начала эпохи Мэйдзи, что приводит к тому, что реализации календаря расширяют эпоху Мэйдзи дальше в прошлое, чем это было на самом деле. Во-вторых, предстоящее предложение Intl era and monthCode Proposal определяет, что для дат до 1873-01-01 ISO следует использовать григорианские эпохи, но браузеры традиционно использовали приближенные значения предыдущих японских эпох. Календарьjapaneseбыл введен 1 января 6 года эпохи Мэйдзи / 1873-01-01 ISO, поэтому эти проблемы затрагивают только пролептические даты. - Другие указанные календари:
chinese,dangi,iso8601, не используют эпохи и возвращаютundefined.
Сеттер свойства era является undefined. Вы не можете изменить это свойство напрямую. Используйте метод with() для создания нового объекта Temporal.PlainDate с желаемым новым значением. При установке эпох псевдонимы "ad" и "bc" также принимаются для эпох "ce" и "bce" календарей gregory или japanese.
Примечание: Эта строка не предназначена для отображения пользователям. Используйте toLocaleString() с соответствующими параметрами для получения локализованной строки.
Примеры
Использование эпохи
const date = Temporal.PlainDate.from("2021-07-01"); // ISO 8601 calendar
console.log(date.era); // undefined
const date2 = Temporal.PlainDate.from("2021-07-01[u-ca=gregory]");
console.log(date2.era); // ce
const date3 = Temporal.PlainDate.from("-002021-07-01[u-ca=gregory]");
console.log(date3.era); // bce
const date4 = Temporal.PlainDate.from("2021-07-01[u-ca=japanese]");
console.log(date4.era); // reiwa
Изменение эпохи
Вы можете установить era только для календарей, которые их поддерживают. Например, календарь ISO 8601 не имеет эпох. Обратите внимание, что вы должны предоставлять era и eraYear вместе.
const date = Temporal.PlainDate.from("2021-07-01[u-ca=gregory]");
const newDate = date.with({ era: "bc", eraYear: 100 });
console.log(newDate.toString()); // -000099-07-01[u-ca=gregory]
const date2 = Temporal.PlainDate.from("2021-07-01[u-ca=japanese]");
const newDate2 = date2.with({ era: "meiji", eraYear: 1 });
console.log(newDate2.toString()); // 1868-07-01[u-ca=japanese]
Спецификации
| Спецификация |
|---|
| Temporal # sec-get-temporal.plaindate.prototype.era |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | Bun | Deno | Node.js | |
era |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
См. также
Temporal.PlainDateTemporal.PlainDate.prototype.with()Temporal.PlainDate.prototype.add()Temporal.PlainDate.prototype.subtract()Temporal.PlainDate.prototype.yearTemporal.PlainDate.prototype.eraYear
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainDate/era