Класс Info в Luxon представляет собой набор статических
утилит, предназначенных для получения локализованных данных и информации
о возможностях окружения, связанных с интернационализацией. Он не
работает с конкретными датами и временем напрямую, а обслуживает слой
метаданных: названия месяцев, дней недели, проверку поддерживаемых зон
времени, особенности Intl и поведение локали.
В Luxon основная работа с датами выполняется через
DateTime, Duration и Interval.
Класс Info выделен отдельно и решает задачи справочной
информации:
Info не хранит состояние и не зависит от экземпляров —
все методы статические.
Большая часть функциональности Info опирается на
стандарт ECMAScript Internationalization API (Intl). Если
среда выполнения ограничена или не поддерживает нужные части
Intl, результат может отличаться.
Ключевой момент заключается в том, что:
Intl.DateTimeFormatДля диагностики используется:
Info.featuresInfo.features возвращает набор булевых флагов,
отражающих поддержку ключевых возможностей Intl.
Типичный набор включает:
IntlDateTimeFormattimeZoneПример использования:
import { Info } from "luxon";
const features = Info.features;
console.log(features);
Результат представляет собой объект, например:
{
intl: true,
intlTokens: true,
zones: true,
relative: true
}
Эти флаги помогают определить, насколько полноценно будет работать локализация в текущей среде.
Luxon использует IANA идентификаторы часовых поясов
("Europe/Berlin", "Asia/Tokyo" и т.д.). Класс
Info предоставляет инструменты для их проверки и
нормализации.
Метод:
Info.isValidIANAZone(zone: string): boolean
Проверяет, является ли строка корректным IANA-идентификатором.
Пример:
Info.isValidIANAZone("Europe/Moscow"); // true
Info.isValidIANAZone("Invalid/Zone"); // false
Особенность заключается в том, что проверка зависит от данных окружения, поэтому в разных средах поведение может слегка отличаться.
Метод:
Info.normalizeZone(zone: string): string
Используется для приведения псевдонимов или некорректных значений к стандартному виду.
Пример:
Info.normalizeZone("UTC");
// "UTC"
Info.normalizeZone("local");
// преобразуется в системную зону, если возможно
Нормализация особенно полезна при работе с пользовательским вводом или внешними API.
Метод Info.weekdays возвращает названия дней недели в
зависимости от локали и формата.
Сигнатура:
Info.weekdays(length?: string, options?: object)
Определяет формат вывода:
"long" — полные названия"short" — сокращённые"narrow" — минимальные обозначенияПример:
Info.weekdays("long");
// ["понедельник", "вторник", "среда", ...]
Info.weekdays("short");
// ["пн", "вт", "ср", ...]
Info.weekdays("narrow");
// ["п", "в", "с", ...]
Можно явно указать локаль:
Info.weekdays("long", { locale: "en-US" });
// ["Monday", "Tuesday", ...]
Метод:
Info.months(length?: string, options?: object)
Возвращает список месяцев года в текущей или заданной локали.
"long" — January, February…"short" — Jan, Feb…"narrow" — J, F…Пример:
Info.months("long", { locale: "ru" });
// ["январь", "февраль", "март", ...]
Info.months("short", { locale: "en" });
// ["Jan", "Feb", "Mar", ...]
Метод:
Info.eras(length?: string, options?: object)
Возвращает обозначения исторических эр (например, до нашей эры и нашей эры).
Info.eras("long", { locale: "ru" });
// ["до н. э.", "н. э."]
Info.eras("short", { locale: "en" });
// ["BC", "AD"]
Поддержка эр зависит от возможностей Intl и локали.
Метод:
Info.meridiems(options?: object)
Возвращает обозначения половины суток в 12-часовом формате.
Пример:
Info.meridiems({ locale: "en-US" });
// ["AM", "PM"]
В некоторых локалях значения могут отсутствовать или быть неприменимыми (если используется 24-часовой формат).
Все методы Info, работающие с текстовыми
представлениями, учитывают следующую иерархию:
optionsПример:
import { Settings, Info } from "luxon";
Settings.defaultLocale = "fr";
Info.months("long");
// будет использовать французскую локаль
Во всех методах, возвращающих списки календарных элементов, используется единая система длины:
| Значение | Описание |
|---|---|
| long | полные текстовые формы |
| short | сокращённые формы |
| narrow | минимальные символы |
Эта система унифицирована для:
Поведение Info может изменяться в зависимости от
окружения:
IntlВ средах с урезанным Intl:
features может указывать на неполную поддержкуКласс часто применяется для проверки готовности приложения к работе с локализацией:
import { Info } from "luxon";
if (!Info.features.intl) {
console.warn("Intl не поддерживается");
}
if (!Info.features.zones) {
console.warn("Часовые пояса могут работать некорректно");
}
Хотя Info не связан напрямую с форматированием дат, его
данные часто используются как источник:
Пример генерации списка месяцев:
const months = Info.months("long", { locale: "ru" });
const options = months.map((m, i) => ({
label: m,
value: i + 1
}));
Info тесно связан с поведением:
DateTime.setLocale()Settings.defaultLocaleDateTime.toLocaleString()При изменении локали через Settings результаты
Info автоматически отражают новое состояние.
Структура класса ориентирована на минимализм и делегирование задач
системному Intl, а не на собственную реализацию
локализации.