Метод Info.eras в библиотеке Luxon предоставляет доступ
к локализованным названиям эпох (eras), используемым в календарных
системах. Под эпохой понимается крупный исторический период, применяемый
в датах различных культур и локалей, например «до нашей эры» и «нашей
эры» в григорианском календаре.
Внутри Luxon этот метод относится к статическому объекту
Info и не зависит от конкретного экземпляра
DateTime, поскольку работает с глобальными языковыми и
календарными данными, а не с конкретными датами.
Info.eras(length?: string, options?: Object): string[]
Метод возвращает массив строк, содержащий локализованные названия эпох.
Определяет формат возвращаемых названий эпох.
Поддерживаемые значения:
Различия проявляются в зависимости от локали:
"Before Christ",
"Anno Domini""BC", "AD""B", "A"Объект конфигурации, содержащий параметры локали.
Основное поле:
"en", "ru", "fr")Если locale не указан, используется системная локаль
окружения.
Метод возвращает массив строк, содержащий возможные значения эпох для выбранной локали и формата.
Обычно массив состоит из двух элементов:
["BC", "AD"]
или для других локалей:
["Before Christ", "Anno Domini"]
Значения эпох зависят от международных стандартов CLDR, которые использует Luxon.
Info.eras("long", { locale: "en" })
Результат:
["Before Christ", "Anno Domini"]
Info.eras("long", { locale: "ru" })
Результат может быть представлен в виде:
["до н. э.", "н. э."]
Info.eras("short", { locale: "en" })
Результат:
["BC", "AD"]
Info.eras("narrow", { locale: "en" })
Результат:
["B", "A"]
import { Info } from "luxon";
const eras = Info.eras();
console.log(eras);
Результат зависит от системной локали, чаще всего:
["BC", "AD"]
import { Info } from "luxon";
const eras = Info.eras("long", { locale: "en" });
console.log(eras);
Вывод:
["Before Christ", "Anno Domini"]
Метод применяется при построении календарных компонентов, где требуется динамическая локализация подписей эпох:
import { Info } from "luxon";
function getEraLabel(value, locale) {
const labels = Info.eras("short", { locale });
return value === "BC" ? labels[0] : labels[1];
}
Метод не принимает и не учитывает даты. Он не связан с
DateTime и не требует временных значений для
вычислений.
Возвращаемые значения формируются на основе таблиц локализации CLDR, встроенных в Luxon. Это означает:
Поддерживаются все локали, доступные в Luxon через Intl API. Если локаль не содержит специфичных значений эпох, используется fallback на английские значения.
| Формат | Пример (en) | Характеристика |
|---|---|---|
| long | Before Christ | Полное название |
| short | BC | Сокращение |
| narrow | B | Минимальное обозначение |
Info.eras относится к группе методов информационного
уровня:
Info.weekdaysInfo.monthsInfo.meridiemsInfo.erasВсе они выполняют задачу предоставления локализованных календарных данных без привязки к конкретным моментам времени.
В связке с DateTime метод применяется для построения
пользовательских представлений исторических дат:
import { DateTime, Info } from "luxon";
const dt = DateTime.fromObject({ year: -44 });
const era = dt.year < 0
? Info.eras("short", { locale: "en" })[0]
: Info.eras("short", { locale: "en" })[1];
console.log(era);