Класс Settings представляет собой централизованный механизм глобальной конфигурации поведения библиотеки Luxon. Он управляет параметрами по умолчанию для всех создаваемых и форматируемых объектов времени, влияя на локализацию, временные зоны, календарные системы, числовые системы, а также стратегию обработки некорректных значений и источника текущего времени.
Настройки в Luxon реализованы как статические свойства и методы, что делает их глобальными для всего контекста выполнения. Это означает, что изменение одного параметра отражается на всех операциях DateTime, Interval и Duration, если не задано локальное переопределение.
Settings функционирует как глобальное хранилище конфигурации, влияющее на поведение:
Каждый параметр имеет значение по умолчанию, соответствующее среде выполнения (браузер или Node.js), но может быть изменён в рантайме.
Одним из ключевых параметров является defaultLocale,
определяющий язык форматирования:
toLocaleString;Изменение локали через Settings приводит к глобальному изменению всех последующих операций форматирования.
Важным аспектом является взаимодействие с системной локалью
окружения. Luxon может использовать системные настройки, если
defaultLocale не задан явно.
Settings управляет также системами представления чисел и календарей:
defaultNumberingSystem — определяет используемую
систему цифр (например, латинская, арабская и др.);defaultOutputCalendar — задаёт календарную систему
(григорианский, исламский, буддийский и т.д.).Эти параметры особенно важны в интернационализированных приложениях, где один и тот же момент времени должен отображаться в различных культурных контекстах.
При отсутствии явной настройки используются значения, предоставляемые окружением через Intl API.
Одним из наиболее значимых параметров является
defaultZone, определяющий временную зону по умолчанию.
Возможные варианты:
UTC,
local);Поведение влияет на все создаваемые экземпляры DateTime без явного указания зоны.
Особенности:
local используется системная временная
зона окружения;UTC все операции интерпретируются в универсальном
времени;Параметр throwOnInvalid управляет стратегией обработки
ошибок:
true — при некорректном вводе выбрасывается
исключение;false — создаётся объект с состоянием invalid без
прерывания выполнения.Это влияет на:
Выбор стратегии определяет стиль работы: строгий (fail-fast) или устойчивый к ошибкам.
Settings предоставляет механизм контроля источника текущего времени
через функцию now.
По умолчанию используется системный таймер (Date.now()),
однако возможно переопределение:
Функция должна возвращать числовое значение timestamp в миллисекундах.
Luxon использует внутренние кеши для оптимизации работы с зонами и локалями. Settings предоставляет метод управления этим поведением:
resetCaches() — очищает внутренние кешированные
данные.Сброс кеша влияет на:
Это особенно важно при динамическом изменении системных настроек во время выполнения приложения.
Изменения Settings применяются немедленно и глобально. Это означает:
Такое поведение требует аккуратного управления состоянием, особенно в многомодульных приложениях.
Settings формирует единый слой конфигурации для всех операций Luxon, обеспечивая согласованность:
Глобальный характер настроек делает их критическим элементом архитектуры при работе с датами и временем в JavaScript-приложениях.