Библиотека Day.js использует локали для формирования человекочитаемых представлений времени, включая отображение дат, времени суток, названий месяцев, дней недели и специализированных шаблонов форматов. Поддержка локалей встроена в ядро и реализуется через подключаемые модули, что позволяет гибко управлять отображением времени в зависимости от языка и региональных особенностей.
Локаль в Day.js определяет:
По умолчанию используется локаль en. Для смены локали
необходимо подключить соответствующий модуль и явно активировать её:
import dayjs from 'dayjs'
import 'dayjs/locale/ru'
dayjs.locale('ru')
После установки локали все операции форматирования начинают учитывать выбранный язык.
Day.js использует предустановленные форматы, которые автоматически адаптируются под локаль:
LT — локализованное время (часы и минуты)LTS — локализованное время с секундамиL — краткая датаLL — расширенная дата (месяц прописью)LLL — дата и время в расширенном видеLLLL — полное текстовое представление даты и
времениПример использования:
import dayjs from 'dayjs'
import 'dayjs/locale/ru'
dayjs.locale('ru')
const now = dayjs()
console.log(now.format('LT')) // 14:35
console.log(now.format('LTS')) // 14:35:42
console.log(now.format('LL')) // 23 мая 2026 г.
console.log(now.format('LLLL')) // суббота, 23 мая 2026 г. 14:35
Каждый из этих форматов зависит от локали и меняется при её переключении.
Внутри каждой локали Day.js хранит объект конфигурации:
months — полные названия месяцевmonthsShort — сокращённые названияweekdays — полные названия дней неделиweekdaysShort — сокращённые дниweekdaysMin — минимальные обозначенияformats — шаблоны форматовПример структуры (упрощённо):
{
months: [
'январь', 'февраль', 'март', ...
],
weekdays: [
'воскресенье', 'понедельник', ...
],
formats: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'DD.MM.YYYY',
LL: 'D MMMM YYYY'
}
}
Эти значения используются при вызове format().
Day.js позволяет менять локаль динамически без пересоздания объектов:
import dayjs from 'dayjs'
import 'dayjs/locale/ru'
import 'dayjs/locale/en'
const date = dayjs()
dayjs.locale('en')
console.log(date.format('LL'))
dayjs.locale('ru')
console.log(date.format('LL'))
Один и тот же объект даты изменяет отображение в зависимости от текущей локали.
Помимо встроенных шаблонов, можно использовать произвольные форматы:
YYYY — годMM — месяц (число)DD — деньHH — часы (24-часовой формат)mm — минутыss — секундыdayjs().format('YYYY-MM-DD HH:mm:ss')
Локаль влияет только на текстовые элементы, например:
LL, LLL,
LLLL.При использовании полного текстового формата Day.js подставляет строки из локали:
dayjs('2026-05-23').format('dddd, D MMMM YYYY')
Результат зависит от локали:
Таким образом, шаблон остаётся неизменным, изменяется только словарь.
Форматы LT и LTS являются ключевыми для
отображения времени суток:
dayjs().format('LT')
dayjs().format('LTS')
Их значение определяется локалью:
Это задаётся в конфигурации локали:
formats: {
LT: 'h:mm A',
LTS: 'h:mm:ss A'
}
Day.js позволяет подключать сразу несколько локалей и переключаться между ними:
import dayjs from 'dayjs'
import 'dayjs/locale/ru'
import 'dayjs/locale/fr'
const date = dayjs()
dayjs.locale('ru')
console.log(date.format('LLLL'))
dayjs.locale('fr')
console.log(date.format('LLLL'))
Каждая локаль влияет на:
Возможна регистрация собственной локали:
dayjs.locale({
name: 'custom',
weekdays: ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
months: ['M1', 'M2', 'M3', 'M4', 'M5', 'M6',
'M7', 'M8', 'M9', 'M10', 'M11', 'M12'],
formats: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'DD/MM/YYYY',
LL: 'D MMM YYYY',
LLL: 'D MMMM YYYY HH:mm',
LLLL: 'dddd, D MMMM YYYY HH:mm'
}
})
После этого она используется как стандартная:
dayjs.locale('custom')
При работе с цепочками методов локаль не влияет на вычисления, только на финальное отображение:
const result = dayjs()
.add(2, 'day')
.subtract(3, 'hour')
.format('LLLL')
Все операции происходят в нейтральном времени, локаль применяется
только в format().
Day.js гарантирует, что:
Это обеспечивает предсказуемость при работе с международными интерфейсами.
Форматы времени по локали особенно важны в следующих сценариях:
Стандартизированные форматы LL, LLL,
LLLL позволяют унифицировать отображение времени без
ручного форматирования для каждого языка.