Moment.js предоставляет мощный инструмент для работы с датами и временем, включая возможность локализации и настройки отображения названий месяцев и дней недели. Это особенно важно для приложений, ориентированных на международную аудиторию, где стандартные английские названия необходимо адаптировать под нужный язык или стиль отображения.
Для того чтобы изменить язык отображения, используется метод
moment.locale(). Он задает локаль, которая влияет на
форматирование дат, включая названия месяцев и дней недели.
moment.locale('ru'); // Устанавливаем русскую локаль
console.log(moment().format('LLLL')); // Пятница, 21 мая 2026 г., 10:30
Важно: локаль должна быть доступна в Moment.js. По умолчанию в стандартной сборке включены многие языки, включая русский. Если локаль отсутствует, необходимо подключить соответствующий файл локализации.
Moment.js использует массивы для хранения полных и сокращённых
названий месяцев. Для русской локали это массивы months и
monthsShort.
moment.updateLocale('ru', {
months: [
'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь',
'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'
],
monthsShort: [
'Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн',
'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'
]
});
После обновления локали все вызовы форматирования дат будут использовать новые значения:
console.log(moment('2026-05-21').format('MMMM')); // Май
console.log(moment('2026-05-21').format('MMM')); // Май
Особенность: формат MMMM выводит полное
название месяца, MMM — сокращенное.
Дни недели также хранятся в массивах weekdays,
weekdaysShort и weekdaysMin. Эти массивы
позволяют контролировать полные, сокращенные и минимальные варианты
отображения.
moment.updateLocale('ru', {
weekdays: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
weekdaysShort: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
weekdaysMin: ['В', 'П', 'В', 'С', 'Ч', 'П', 'С']
});
Пример использования:
console.log(moment().format('dddd')); // Пятница
console.log(moment().format('ddd')); // Пт
console.log(moment().format('dd')); // П
Примечание: dddd — полное название дня
недели, ddd — сокращенное, dd — минимальное
(обычно одна-две буквы).
В некоторых странах неделя начинается с понедельника, в других — с
воскресенья. Moment.js позволяет задавать первый день недели через
свойство week.dow и первый день года через
week.doy.
moment.updateLocale('ru', {
week: {
dow: 1, // Понедельник
doy: 4 // Неделя, содержащая 4 января, считается первой
}
});
Эти настройки влияют на методы week() и
isoWeek(), определяя расчёт недельного номера для любой
даты.
Возможна также более гибкая настройка локали через функции, возвращающие строки на основе условий. Это полезно, если требуется изменять названия месяцев или дней в зависимости от контекста.
moment.updateLocale('ru', {
months: function (momentInstance) {
const months = [
'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь',
'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'
];
return months[momentInstance.month()];
}
});
Такой подход обеспечивает возможность создания динамических локализаций, например, с учётом падежей или специфических форматов.
updateLocale сохраняет существующие параметры, заменяя
только указанные. Это удобно для локализации отдельных элементов без
полной переинициализации.MMMM, ddd и
dddd вместо ручного написания названий месяцев и дней.Настройка названий месяцев и дней недели в Moment.js позволяет
создавать локализованные интерфейсы с высокой точностью, поддерживая как
статические, так и динамические формы. Гибкость
updateLocale обеспечивает контроль над полными,
сокращёнными и минимальными формами, а также над первым днём недели и
года, что критично для международных приложений.