Названия месяцев и дней недели

Библиотека Day.js поддерживает локализацию названий месяцев, дней недели, форматов дат и других языковых особенностей через систему locale. По умолчанию используется английская локаль, поэтому для отображения русских названий требуется подключение соответствующего языкового пакета.

import dayjs from 'dayjs'
import 'dayjs/locale/ru'

dayjs.locale('ru')

console.log(dayjs().format('MMMM'))
// май

После установки локали форматирование автоматически начинает использовать русские названия месяцев и дней недели.


Названия месяцев

Полное название месяца

Токен MMMM выводит полное название месяца.

import dayjs from 'dayjs'
import 'dayjs/locale/ru'

dayjs.locale('ru')

const date = dayjs('2025-03-15')

console.log(date.format('MMMM'))
// март

Краткое название месяца

Токен MMM выводит сокращённое название месяца.

console.log(date.format('MMM'))
// мар.

Номер месяца

Токен MM выводит номер месяца с ведущим нулём.

console.log(date.format('MM'))
// 03

Токен M выводит номер без ведущего нуля.

console.log(date.format('M'))
// 3

Все названия месяцев

Генерация массива месяцев

Для получения списка месяцев удобно использовать цикл.

import dayjs from 'dayjs'
import 'dayjs/locale/ru'

dayjs.locale('ru')

const months = []

for (let i = 0; i < 12; i++) {
  months.push(dayjs().month(i).format('MMMM'))
}

console.log(months)

Результат:

[
  'январь',
  'февраль',
  'март',
  'апрель',
  'май',
  'июнь',
  'июль',
  'август',
  'сентябрь',
  'октябрь',
  'ноябрь',
  'декабрь'
]

Названия дней недели

Полное название дня

Токен dddd выводит полное название дня недели.

const date = dayjs('2025-03-15')

console.log(date.format('dddd'))
// суббота

Краткое название дня

Токен ddd выводит сокращённое название.

console.log(date.format('ddd'))
// сб

Минимальное название дня

Токен dd выводит двухсимвольное сокращение.

console.log(date.format('dd'))
// Сб

Все дни недели

Формирование массива дней недели

import dayjs from 'dayjs'
import 'dayjs/locale/ru'

dayjs.locale('ru')

const days = []

for (let i = 0; i < 7; i++) {
  days.push(dayjs().day(i).format('dddd'))
}

console.log(days)

Результат:

[
  'воскресенье',
  'понедельник',
  'вторник',
  'среда',
  'четверг',
  'пятница',
  'суббота'
]

Локали разных языков

Английская локаль

import dayjs from 'dayjs'
import 'dayjs/locale/en'

dayjs.locale('en')

console.log(dayjs().format('MMMM'))
// May

console.log(dayjs().format('dddd'))
// Friday

Немецкая локаль

import 'dayjs/locale/de'

dayjs.locale('de')

console.log(dayjs().format('MMMM'))
// Mai

console.log(dayjs().format('dddd'))
// Freitag

Французская локаль

import 'dayjs/locale/fr'

dayjs.locale('fr')

console.log(dayjs().format('MMMM'))
// mai

Локаль только для одного объекта даты

Метод locale() можно применять к отдельному экземпляру даты.

import dayjs from 'dayjs'
import 'dayjs/locale/ru'
import 'dayjs/locale/en'

const date = dayjs('2025-06-10')

console.log(date.locale('ru').format('MMMM'))
// июнь

console.log(date.locale('en').format('MMMM'))
// June

Глобальная локаль при этом не изменяется.


Смешанное форматирование

Названия месяцев и дней недели можно комбинировать с другими токенами.

const date = dayjs('2025-12-25')

console.log(date.format('dddd, D MMMM YYYY'))
// четверг, 25 декабря 2025

Формы месяца в русском языке

Русская локаль использует разные формы месяца в зависимости от формата.

console.log(date.format('MMMM'))
// декабрь

console.log(date.format('D MMMM'))
// 25 декабря

В первом случае используется именительный падеж, во втором — родительный.


Плагин LocaleData

Плагин LocaleData предоставляет доступ к массивам месяцев и дней недели без ручного перебора.

Подключение плагина

import dayjs from 'dayjs'
import localeData from 'dayjs/plugin/localeData'
import 'dayjs/locale/ru'

dayjs.extend(localeData)
dayjs.locale('ru')

Получение месяцев

console.log(dayjs.months())

Результат:

[
  'январь',
  'февраль',
  'март',
  'апрель',
  'май',
  'июнь',
  'июль',
  'август',
  'сентябрь',
  'октябрь',
  'ноябрь',
  'декабрь'
]

Краткие месяцы

console.log(dayjs.monthsShort())

Результат:

[
  'янв.',
  'февр.',
  'март',
  'апр.',
  'май',
  'июнь',
  'июль',
  'авг.',
  'сент.',
  'окт.',
  'нояб.',
  'дек.'
]

Дни недели

console.log(dayjs.weekdays())

Краткие дни недели

console.log(dayjs.weekdaysShort())

Минимальные дни недели

console.log(dayjs.weekdaysMin())

Индексы месяцев

Метод month() использует нумерацию с нуля.

Значение Месяц
0 январь
1 февраль
2 март
3 апрель
4 май
5 июнь
6 июль
7 август
8 сентябрь
9 октябрь
10 ноябрь
11 декабрь

Пример:

console.log(dayjs().month(0).format('MMMM'))
// январь

Индексы дней недели

Метод day() также использует числовые индексы.

Значение День
0 воскресенье
1 понедельник
2 вторник
3 среда
4 четверг
5 пятница
6 суббота

Пример:

console.log(dayjs().day(1).format('dddd'))
// понедельник

Изменение локали во время выполнения

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

Пользовательская локаль

Day.js позволяет переопределять названия месяцев и дней недели.

import dayjs from 'dayjs'
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'
  ]
})

console.log(dayjs('2025-05-01').format('MMMM'))
// May_Custom

Использование в интерфейсах

Названия месяцев и дней недели часто применяются при создании календарей, datepicker-компонентов и систем расписаний.

Пример генерации заголовка календаря:

const current = dayjs()

const title = current.format('MMMM YYYY')

console.log(title)
// май 2025

Комбинация с массивами локали

const weekdays = dayjs.weekdaysMin()

weekdays.forEach(day => {
  console.log(day)
})

Результат:

Вс
Пн
Вт
Ср
Чт
Пт
Сб

Форматирование даты с полным текстом

const date = dayjs('2025-08-18')

console.log(
  date.format('dddd, D MMMM YYYY года')
)

Результат:

понедельник, 18 августа 2025 года