Библиотека Luxon опирается на стандарт Intl API
JavaScript для работы с локализацией, часовыми поясами и форматированием
дат. Метод features в пространстве имён Info
используется для определения того, какие возможности международной
локализации доступны в текущем окружении выполнения кода.
Метод Info.features() возвращает объект, описывающий
поддержку ключевых функций ECMAScript Internationalization API
(Intl), которые критичны для корректной работы Luxon.
Основная задача метода — дать возможность определить:
Intl в целом;Info.features()
Метод не принимает параметров и возвращает объект с булевыми значениями.
Результатом работы является объект следующего вида:
{
intl: boolean,
timeZone: boolean,
relative: boolean,
month: boolean,
weekday: boolean
}
Каждое поле отражает конкретную возможность среды выполнения.
intlintl: boolean
Определяет наличие базовой поддержки Intl API.
Если значение false, Luxon не сможет корректно
использовать локализацию, и большая часть форматирования будет работать
в упрощённом режиме.
Пример:
import { Info } from "luxon";
const features = Info.features();
console.log(features.intl);
timeZonetimeZone: boolean
Показывает, поддерживает ли окружение работу с именованными часовыми
поясами через Intl.DateTimeFormat.
Критически важно для:
Пример:
if (!Info.features().timeZone) {
// окружение не поддерживает полноценные часовые пояса
}
relativerelative: boolean
Определяет поддержку форматирования относительных временных выражений:
Используется при работе с функциями вроде toRelative() и
toRelativeCalendar().
Если значение false, Luxon будет использовать
fallback-логику без локализованных выражений.
monthmonth: boolean
Отражает поддержку локализованных названий месяцев через
Intl.
Используется при форматировании дат с опциями:
month: "long"month: "short"month: "narrow"Пример поведения:
const dt = DateTime.now().setLocale("ru");
dt.toFormat("LLLL");
При отсутствии поддержки может использоваться упрощённый числовой формат.
weekdayweekday: boolean
Показывает поддержку локализованных названий дней недели.
Задействуется при форматировании:
Пример:
dt.toFormat("cccc");
Метод Info.features() чаще всего используется как
диагностический инструмент для адаптации поведения приложения к
возможностям среды.
import { Info } from "luxon";
const features = Info.features();
if (!features.intl) {
console.warn("Intl API не поддерживается");
}
const { timeZone, relative } = Info.features();
const formatOptions = {
timeZoneName: timeZone ? "long" : undefined
};
if (Info.features().relative) {
console.log(dt.toRelative());
} else {
console.log(dt.toISODate());
}
Метод features является частью слоя абстракции над
Intl API. Luxon не реализует локализацию самостоятельно, а
делегирует её встроенному движку JavaScript (V8, SpiderMonkey,
JavaScriptCore).
Info.features() фактически выполняет проверку наличия и
полноты реализации:
Intl.DateTimeFormatIntl.RelativeTimeFormatВо всех актуальных браузерах:
intl = truetimeZone = truerelative = truemonth = trueweekday = trueМетод возвращает полностью поддерживаемый набор возможностей.
Поведение зависит от версии и сборки Node.js:
В редких случаях (встроенные устройства, урезанные runtime):
IntlВ таких условиях features() помогает обнаружить
ограничения до выполнения форматирования.
Хотя Info.features() не изменяет поведение напрямую, его
результат влияет на:
import { DateTime, Info } from "luxon";
const f = Info.features();
const dt = DateTime.now();
const output = {
iso: dt.toISO(),
formatted: f.intl ? dt.toLocaleString(DateTime.DATETIME_MED) : dt.toISO()
};
console.log(output);
Использование features позволяет создавать код,
который:
Метод отражает только возможности окружения и не учитывает: