Локаль определяет формат отображения даты и времени в зависимости от языка и региональных стандартов. Через локали управляются:
Библиотека Day.js поставляется с большим количеством встроенных локалей, которые подключаются отдельно для уменьшения итогового размера бандла.
По умолчанию Day.js использует английскую локаль
(en).
Для подключения другой локали необходимо импортировать соответствующий модуль.
const dayjs = require('dayjs')
require('dayjs/locale/ru')
dayjs.locale('ru')
console.log(dayjs().format('MMMM'))
import dayjs from 'dayjs'
import 'dayjs/locale/ru'
dayjs.locale('ru')
console.log(dayjs().format('MMMM'))
После установки локали все новые экземпляры Day.js начинают использовать выбранный язык.
Метод dayjs.locale() изменяет локаль глобально.
import dayjs from 'dayjs'
import 'dayjs/locale/de'
dayjs.locale('de')
console.log(dayjs().format('dddd'))
Результат:
Sonntag
Локаль можно назначить отдельному объекту даты без изменения глобальных настроек.
import dayjs from 'dayjs'
import 'dayjs/locale/fr'
const date = dayjs().locale('fr')
console.log(date.format('MMMM'))
Результат:
janvier
При этом глобальная локаль останется неизменной.
console.log(dayjs.locale())
const date = dayjs()
console.log(date.locale())
Day.js поддерживает десятки языков и регионов.
import 'dayjs/locale/ru'
import 'dayjs/locale/en'
import 'dayjs/locale/de'
import 'dayjs/locale/fr'
import 'dayjs/locale/es'
import 'dayjs/locale/zh-cn'
import 'dayjs/locale/ja'
import 'dayjs/locale/it'
import 'dayjs/locale/pt'
import 'dayjs/locale/uk'
После подключения локали методы форматирования начинают возвращать локализованные значения.
import dayjs from 'dayjs'
import 'dayjs/locale/ru'
dayjs.locale('ru')
console.log(dayjs('2025-03-12').format('D MMMM YYYY'))
Результат:
12 марта 2025
dayjs().format('MMMM')
Пример для русской локали:
май
dayjs().format('MMM')
Пример:
мая
dayjs().format('dddd')
dayjs().format('ddd')
dayjs().format('dd')
Для работы с локализованными шаблонами используется плагин
LocalizedFormat.
import dayjs from 'dayjs'
import localizedFormat from 'dayjs/plugin/localizedFormat'
dayjs.extend(localizedFormat)
console.log(dayjs().format('L'))
console.log(dayjs().format('LL'))
console.log(dayjs().format('LLL'))
console.log(dayjs().format('LLLL'))
Форматы зависят от текущей локали.
08/16/2025
August 16, 2025
August 16, 2025 1:30 PM
Saturday, August 16, 2025 1:30 PM
16.08.2025
16 августа 2025 г.
16 августа 2025 г., 13:30
суббота, 16 августа 2025 г., 13:30
Для локализованного отображения относительного времени используется
плагин RelativeTime.
import dayjs from 'dayjs'
import relativeTime from 'dayjs/plugin/relativeTime'
dayjs.extend(relativeTime)
import 'dayjs/locale/ru'
dayjs.locale('ru')
console.log(dayjs().from(dayjs().subtract(3, 'day')))
Результат:
3 дня назад
console.log(dayjs().to(dayjs().add(2, 'hour')))
Результат:
через 2 часа
Локаль можно переключать динамически.
import dayjs from 'dayjs'
import 'dayjs/locale/ru'
import 'dayjs/locale/en'
dayjs.locale('ru')
console.log(dayjs().format('MMMM'))
dayjs.locale('en')
console.log(dayjs().format('MMMM'))
Результат:
май
May
Разные экземпляры могут использовать разные локали.
import dayjs from 'dayjs'
import 'dayjs/locale/ru'
import 'dayjs/locale/fr'
import 'dayjs/locale/de'
const ruDate = dayjs().locale('ru')
const frDate = dayjs().locale('fr')
const deDate = dayjs().locale('de')
console.log(ruDate.format('MMMM'))
console.log(frDate.format('MMMM'))
console.log(deDate.format('MMMM'))
В крупных приложениях часто используется динамический импорт.
async function setLocale(locale) {
await import(`dayjs/locale/${locale}.js`)
dayjs.locale(locale)
}
await setLocale('ru')
Такой подход уменьшает размер первоначального JavaScript-бандла.
Язык браузера можно использовать автоматически.
const locale = navigator.language
console.log(locale)
import dayjs from 'dayjs'
const locale = navigator.language.toLowerCase()
await import(`dayjs/locale/${locale}.js`)
dayjs.locale(locale)
Не все языки могут быть доступны. Часто применяется резервная локаль.
async function loadLocale(locale) {
try {
await import(`dayjs/locale/${locale}.js`)
dayjs.locale(locale)
} catch {
dayjs.locale('en')
}
}
Метод localeData() предоставляет доступ к внутренним
данным локали.
Для этого используется плагин LocaleData.
import localeData from 'dayjs/plugin/localeData'
dayjs.extend(localeData)
console.log(dayjs.months())
Результат:
[
'January',
'February',
'March'
]
console.log(dayjs.monthsShort())
console.log(dayjs.weekdays())
console.log(dayjs.weekdaysShort())
console.log(dayjs.weekdaysMin())
console.log(dayjs.localeData().firstDayOfWeek())
Для разных локалей значение отличается:
Для изменения локали используется плагин
UpdateLocale.
import updateLocale from 'dayjs/plugin/updateLocale'
dayjs.extend(updateLocale)
dayjs.updateLocale('en', {
months: [
'Jan_Custom',
'Feb_Custom',
'Mar_Custom',
'Apr_Custom',
'May_Custom',
'Jun_Custom',
'Jul_Custom',
'Aug_Custom',
'Sep_Custom',
'Oct_Custom',
'Nov_Custom',
'Dec_Custom'
]
})
dayjs.updateLocale('ru', {
weekStart: 1
})
dayjs.updateLocale('ru', {
relativeTime: {
future: 'через %s',
past: '%s назад',
s: 'несколько секунд',
m: 'минута',
mm: '%d минут',
h: 'час',
hh: '%d часов'
}
})
Локаль можно определить вручную.
dayjs.locale({
name: 'custom',
weekdays: [
'Day1',
'Day2',
'Day3',
'Day4',
'Day5',
'Day6',
'Day7'
],
months: [
'Month1',
'Month2',
'Month3',
'Month4',
'Month5',
'Month6',
'Month7',
'Month8',
'Month9',
'Month10',
'Month11',
'Month12'
]
})
dayjs.locale('custom')
console.log(dayjs().format('MMMM'))
Некоторые языки имеют несколько региональных вариантов.
'en'
'en-gb'
'pt'
'pt-br'
'zh-cn'
'zh-tw'
en и
en-gbdayjs.locale('en')
console.log(dayjs('2025-01-15').format('L'))
Результат:
01/15/2025
dayjs.locale('en-gb')
console.log(dayjs('2025-01-15').format('L'))
Результат:
15/01/2025
if (dayjs.Ls['ru']) {
console.log('Локаль доступна')
}
console.log(dayjs.Ls)
Объект содержит все локали, загруженные в текущее приложение.
import dayjs from 'dayjs'
import 'dayjs/locale/ru'
dayjs.locale('ru')
import { Locale } from 'dayjs'
const customLocale: Partial<Locale> = {
name: 'custom'
}
Каждая локаль импортируется отдельно:
import 'dayjs/locale/ru'
const date = dayjs()
dayjs.locale('ru')
console.log(date.format('MMMM'))
Экземпляр сохранит локаль, которая была активна во время его создания.
const date = dayjs().locale('fr')
dayjs.locale('ru')
console.log(date.format('MMMM'))
Результат будет на французском языке.
import dayjs from 'dayjs'
import 'dayjs/locale/en'
import 'dayjs/locale/ru'
import 'dayjs/locale/de'
function formatDate(date, lang) {
return dayjs(date)
.locale(lang)
.format('LL')
}
console.log(formatDate(new Date(), 'ru'))
console.log(formatDate(new Date(), 'en'))
console.log(formatDate(new Date(), 'de'))
const locales = ['en', 'ru', 'de']
async function switchLocale(locale) {
if (!locales.includes(locale)) {
locale = 'en'
}
await import(`dayjs/locale/${locale}.js`)
dayjs.locale(locale)
render()
}
import dayjs from 'dayjs'
import relativeTime from 'dayjs/plugin/relativeTime'
import 'dayjs/locale/ru'
dayjs.extend(relativeTime)
dayjs.locale('ru')
const createdAt = dayjs().subtract(5, 'minute')
console.log(createdAt.fromNow())
Результат:
5 минут назад