Метод toLocaleString в библиотеке Luxon представляет
собой инструмент форматирования даты и времени на основе локали
пользователя и стандартов Intl. Он используется для
получения человекочитаемой строки с учётом региональных настроек, языка
и предпочтений отображения времени.
toLocaleString опирается на встроенный механизм
интернационализации JavaScript (Intl.DateTimeFormat). В
отличие от низкоуровневого форматирования через шаблоны, метод
автоматически адаптирует вывод под локаль и выбранные параметры.
Ключевая особенность заключается в том, что метод работает с объектом
DateTime и возвращает строку, уже готовую для отображения
без дополнительной обработки.
DateTime.toLocaleString(formatOpts?, options?)
Фактически метод вызывается у экземпляра:
dt.toLocaleString(formatOpts?, options?)
formatOpts — предустановленный формат или объект конфигурации Luxon.
Поддерживаются:
DateTime.DATE_SHORTDateTime.DATE_MEDDateTime.DATE_MED_WITH_WEEKDAYDateTime.DATE_FULLDateTime.DATE_HUGEDateTime.TIME_SIMPLEDateTime.TIME_WITH_SECONDSDateTime.DATETIME_SHORTDateTime.DATETIME_MEDDateTime.DATETIME_MED_WITH_SECONDSDateTime.DATETIME_FULLDateTime.DATETIME_HUGEoptions — объект, совместимый с
Intl.DateTimeFormatOptions, либо расширения Luxon:
locale — принудительная локальnumberingSystem — система нумерацииtimeZone — временная зонаLuxon предоставляет набор стандартных форматов, упрощающих вывод дат без необходимости ручной настройки.
dt.toLocaleString(DateTime.DATE_SHORT)
Пример вывода:
24.05.2026
dt.toLocaleString(DateTime.DATE_MED)
Пример:
24 мая 2026 г.
dt.toLocaleString(DateTime.DATE_FULL)
Пример:
воскресенье, 24 мая 2026 г.
dt.toLocaleString(DateTime.DATETIME_FULL)
Пример:
24 мая 2026 г., 14:35 GMT+6
dt.toLocaleString(DateTime.TIME_SIMPLE)
Пример:
14:35
Локализация является ключевым аспектом метода. Luxon автоматически использует системную локаль, но её можно переопределить.
dt.toLocaleString(DateTime.DATE_FULL, {
locale: 'en-US'
})
Результат:
Sunday, May 24, 2026
Для русской локали:
dt.toLocaleString(DateTime.DATE_FULL, {
locale: 'ru'
})
Метод учитывает установленную временную зону объекта
DateTime, но её можно переопределить через параметры.
dt.toLocaleString(DateTime.DATETIME_FULL, {
timeZone: 'Europe/Moscow'
})
Это влияет на отображаемое время без изменения исходного значения объекта.
Вместо предустановленных форматов можно передать объект конфигурации
Intl.DateTimeFormatOptions.
dt.toLocaleString({
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric'
})
Результат:
воскресенье, 24 мая 2026 г.
Такой подход позволяет строить полностью кастомные форматы без
использования toFormat.
В реальных приложениях часто используется комбинация даты и времени через встроенные шаблоны Luxon.
dt.toLocaleString({
...DateTime.DATETIME_MED,
locale: 'ru'
})
Однако приоритет имеет явный объект Intl-конфигурации,
если он передан.
toFormatМетод toLocaleString отличается от toFormat
принципом работы:
toLocaleString использует Intl и локаль
системыtoFormat использует кастомные токены LuxonПример:
dt.toFormat('dd LLLL yyyy')
и
dt.toLocaleString(DateTime.DATE_FULL)
Первый вариант полностью контролируется разработчиком, второй — адаптируется к региону.
Если объект DateTime является некорректным
(Invalid DateTime), метод возвращает строку:
Invalid DateTime
Это важно при работе с парсингом дат и внешними источниками данных.
article.createdAt.toLocaleString(DateTime.DATETIME_MED)
event.start.toLocaleString({
weekday: 'long',
month: 'long',
day: 'numeric'
})
now.setZone(user.timeZone).toLocaleString(DateTime.TIME_SIMPLE)
dt.toLocaleString(DateTime.DATETIME_FULL, {
locale: 'en-GB',
timeZone: 'UTC'
})
DateTimeIntl API окруженияdt.toLocaleString(DateTime.DATE_FULL)
Без явного указания локали результат может зависеть от окружения сервера или браузера.
Метод не гарантирует фиксированный формат строки. Например, порядок компонентов даты может отличаться:
24 мая 2026 г.May 24, 2026toFormatПопытка использовать токены Luxon в toLocaleString
приводит к некорректному выводу, так как метод не интерпретирует
форматные строки.