Библиотека Moment.js предоставляет гибкую систему форматирования дат и времени. Одной из наиболее распространённых задач является вывод коротких дат — компактных строковых представлений, удобных для интерфейсов, таблиц, карточек товаров, уведомлений и мобильных приложений.
Короткий формат даты позволяет отображать только необходимую информацию:
format()Основной инструмент форматирования дат — метод
format().
moment().format('DD.MM.YYYY');
Результат:
21.05.2026
Метод принимает строку-шаблон, где каждый символ отвечает за определённую часть даты.
| Токен | Описание | Пример |
|---|---|---|
D |
День без ведущего нуля | 3 |
DD |
День с ведущим нулём | 03 |
moment().format('D');
moment().format('DD');
| Токен | Описание | Пример |
|---|---|---|
M |
Месяц без нуля | 5 |
MM |
Месяц с нулём | 05 |
moment().format('M');
moment().format('MM');
| Токен | Описание | Пример |
|---|---|---|
YY |
Короткий год | 26 |
YYYY |
Полный год | 2026 |
moment().format('YY');
moment().format('YYYY');
moment().format('DD.MM.YYYY');
Результат:
21.05.2026
moment().format('DD.MM.YY');
Результат:
21.05.26
moment().format('MM/DD/YYYY');
Результат:
05/21/2026
moment().format('YYYY-MM-DD');
Результат:
2026-05-21
Такой формат часто используется:
Moment.js позволяет свободно комбинировать разделители.
moment().format('DD.MM.YYYY');
moment().format('DD/MM/YYYY');
moment().format('DD-MM-YYYY');
moment().format('DD MM YYYY');
moment().format('DD [день] MM [месяц]');
Результат:
21 день 05 месяц
Текст в квадратных скобках не интерпретируется как токен.
Moment.js поддерживает локали для автоматического форматирования.
moment.locale('ru');
moment().format('L');
Результат для русской локали:
21.05.2026
Результат для английской локали:
05/21/2026
| Формат | Описание |
|---|---|
L |
Короткая дата |
LL |
Полная дата |
LLL |
Дата и время |
LLLL |
Полный формат |
Пример:
moment().format('L');
const date = moment('2026-12-07');
date.format('DD.MM.YY');
Результат:
07.12.26
Dateconst nativeDate = new Date();
moment(nativeDate).format('DD.MM.YYYY');
moment.unix(1716278400).format('DD.MM.YYYY');
moment(1716278400000).format('DD.MM.YYYY');
Короткие даты почти всегда используют ведущие нули.
moment().format('D.M.YYYY');
Результат:
3.5.2026
moment().format('DD.MM.YYYY');
Результат:
03.05.2026
Даже в компактных форматах часто требуется короткое время.
moment().format('DD.MM.YYYY HH:mm');
Результат:
21.05.2026 14:35
| Токен | Значение |
|---|---|
HH |
Часы |
mm |
Минуты |
ss |
Секунды |
Иногда отображается только часть даты.
moment().format('MM.YYYY');
Результат:
05.2026
moment().format('DD.MM');
Результат:
21.05
| Токен | Пример |
|---|---|
MMM |
май |
MMMM |
май / мая |
moment.locale('ru');
moment().format('DD MMM');
Результат:
21 мая
Перед выводом даты рекомендуется проверять её валидность.
const date = moment('invalid-date');
date.isValid();
Результат:
false
const date = moment(userDate);
const result = date.isValid()
? date.format('DD.MM.YYYY')
: 'Некорректная дата';
const dates = [
'2026-01-10',
'2026-02-15',
'2026-03-20'
];
const formatted = dates.map(date =>
moment(date).format('DD.MM.YYYY')
);
console.log(formatted);
Результат:
[
'10.01.2026',
'15.02.2026',
'20.03.2026'
]
const users = [
{
name: 'Alex',
createdAt: '2026-05-21'
}
];
users.forEach(user => {
console.log(
moment(user.createdAt).format('DD.MM.YYYY')
);
});
moment().format('DD.MM.YYYY');
moment()
.subtract(1, 'day')
.format('DD.MM.YYYY');
moment()
.add(1, 'day')
.format('DD.MM.YYYY');
localeData()Получение локальных шаблонов:
moment.localeData().longDateFormat('L');
Результат:
DD.MM.YYYY
При использовании плагина Moment Timezone:
moment()
.tz('Europe/Moscow')
.format('DD.MM.YYYY');
MM и
mmmoment().format('DD.mm.YYYY');
Ошибка:
mm — минуты;MM — месяц.Правильно:
moment().format('DD.MM.YYYY');
YY
вместо YYYYmoment().format('DD.MM.YY');
Результат:
21.05.26
Если требуется полный год:
moment().format('DD.MM.YYYY');
moment('abc').format('DD.MM.YYYY');
Результат:
Invalid date
DD.MM.YYYY
YYYY-MM-DD
DD.MM.YY
DD.MM.YYYY HH:mm
| Формат | Пример | Назначение |
|---|---|---|
DD.MM.YYYY |
21.05.2026 |
Интерфейсы |
DD.MM.YY |
21.05.26 |
Компактный вывод |
YYYY-MM-DD |
2026-05-21 |
API |
MM/DD/YYYY |
05/21/2026 |
США |
DD MMM |
21 мая |
Человеко-читаемый формат |
function shortDate(date) {
return moment(date).format('DD.MM.YY');
}
console.log(
shortDate('2026-05-21')
);
function UserCard({ user }) {
return (
<div>
{moment(user.createdAt)
.format('DD.MM.YYYY')}
</div>
);
}
methods: {
formatDate(date) {
return moment(date)
.format('DD.MM.YYYY');
}
}
const moment = require('moment');
const date = moment()
.format('DD.MM.YYYY');
console.log(date);
При работе с большими массивами дат форматирование может вызывать дополнительные расходы памяти и CPU.
Пример пакетной обработки:
const formatted = data.map(item => ({
...item,
date: moment(item.date)
.format('DD.MM.YYYY')
}));
Для высоконагруженных систем рекомендуется:
moment();Intl.DateTimeFormat, Day.js,
Luxon).| Токен | Значение |
|---|---|
D |
День |
DD |
День с нулём |
M |
Месяц |
MM |
Месяц с нулём |
YY |
Короткий год |
YYYY |
Полный год |
H |
Час |
HH |
Час с нулём |
m |
Минуты |
mm |
Минуты с нулём |
s |
Секунды |
ss |
Секунды с нулём |
L |
Локальная короткая дата |