Spec-Zone.ru › JavaScript

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.PlainDate
  • Temporal.PlainDate.prototype.with()
  • Temporal.PlainDate.prototype.add()
  • Temporal.PlainDate.prototype.subtract()
  • Temporal.PlainDate.prototype.year
  • Temporal.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API