Moment.js предоставляет возможность работы с датами и временем с учётом локализации, что позволяет отображать дату, время и форматирование в соответствии с правилами конкретного языка или региона. Локаль может задаваться глобально для всего приложения или локально для отдельного объекта даты. Рассмотрим второй подход — локаль для конкретного объекта.
Для установки локали у конкретного объекта Moment используется метод
.locale(). Синтаксис метода следующий:
moment().locale(String);
moment().locale(String, Object);
'ru' для
русского, 'en' для английского.Пример использования:
const date = moment();
date.locale('ru');
console.log(date.format('LLLL')); // "четверг, 21 мая 2026 г. 12:34"
В этом примере локаль 'ru' применяется только к объекту
date. Глобальная локаль остаётся без изменений.
Можно создавать пользовательские локали для отдельных объектов с
помощью второго аргумента метода .locale():
const customLocale = {
months : 'Январь_Февраль_Март_Апрель_Май_Июнь_Июль_Август_Сентябрь_Октябрь_Ноябрь_Декабрь'.split('_'),
monthsShort : 'Янв_Фев_Мар_Апр_Май_Июн_Июл_Авг_Сен_Окт_Ноя_Дек'.split('_'),
weekdays : 'Воскресенье_Понедельник_Вторник_Среда_Четверг_Пятница_Суббота'.split('_'),
weekdaysShort : 'Вс_Пн_Вт_Ср_Чт_Пт_Сб'.split('_'),
longDateFormat : {
LLLL : 'dddd, D MMMM YYYY г., HH:mm'
}
};
const date = moment();
date.locale('custom', customLocale);
console.log(date.format('LLLL')); // "четверг, 21 мая 2026 г., 12:34"
Таким образом, можно создавать локали с любыми индивидуальными настройками, не затрагивая глобальные настройки.
Для случаев, когда необходимо применить локаль только для конкретного форматирования, Moment.js позволяет использовать цепочку методов:
const date = moment();
console.log(date.locale('ru').format('LLLL')); // вывод на русском
console.log(date.format('LLLL')); // вывод в глобальной локали
В этом примере локаль 'ru' применяется только к одному
вызову format(). Глобальная локаль объекта не
изменяется.
Moment.js поддерживает динамическое переключение локалей для отдельных объектов без влияния на другие экземпляры:
const date1 = moment();
const date2 = moment();
date1.locale('ru');
date2.locale('en');
console.log(date1.format('LLLL')); // "четверг, 21 мая 2026 г. 12:34"
console.log(date2.format('LLLL')); // "Thursday, May 21, 2026 12:34"
Это позволяет одновременно использовать разные локали для разных дат в одном приложении.
Чтобы узнать, какая локаль установлена у конкретного объекта,
используется метод .locale() без аргументов:
const date = moment().locale('ru');
console.log(date.locale()); // "ru"
Метод возвращает строку с кодом текущей локали объекта.
moment.locale().Форматирование с учётом локали и относительных дат:
const date = moment().locale('ru');
console.log(date.fromNow()); // "несколько секунд назад"
Использование локали для календарного отображения:
const date = moment().locale('ru');
console.log(date.calendar()); // "Сегодня в 12:34"
Переход между локалями на одном объекте:
const date = moment();
date.locale('en');
console.log(date.format('LLLL')); // Thursday, May 21, 2026 12:34
date.locale('ru');
console.log(date.format('LLLL')); // четверг, 21 мая 2026 г. 12:34
Метод .locale() обеспечивает гибкость в работе с датами,
позволяя задавать индивидуальные локали для каждого объекта, создавать
кастомные локали и динамически изменять их на лету. Это особенно полезно
для приложений с мультиязычным интерфейсом, где разные пользователи или
компоненты могут требовать разных настроек отображения даты и
времени.