Moment.js предоставляет единый механизм преобразования объектов даты
и времени в строковое представление через систему токенов
форматирования. Основной инструмент для этого — метод
format(), который принимает строку-шаблон и возвращает
отформатированное значение даты.
Базовая задача форматирования заключается в превращении внутреннего представления даты в читаемый текст. В Moment.js это реализуется через:
moment().format();
Без параметров метод возвращает дату в ISO-подобном формате:
2026-05-21T14:30:00+06:00
Однако реальная сила метода раскрывается при использовании пользовательских шаблонов.
Форматирование в Moment.js основано на наборе специальных токенов. Каждый токен отвечает за конкретную часть даты.
YYYY — полный год (2026)YY — сокращённый год (26)moment().format('YYYY');
Результат:
2026
MM — месяц с ведущим нулём (01–12)M — месяц без нуля (1–12)MMMM — полное название месяцаMMM — сокращённое название месяцаmoment().format('MMMM');
Пример результата:
май
(при включённой локали)
DD — день с ведущим нулём (01–31)D — день без нуля (1–31)moment().format('DD-MM-YYYY');
Результат:
21-05-2026
dddd — полное название дня неделиddd — сокращённое названиеmoment().format('dddd');
Результат:
четверг
Moment.js поддерживает как 24-часовой, так и 12-часовой формат.
HH — часы (00–23)hh — часы (01–12)mm — минуты (00–59)ss — секунды (00–59)A — AM/PMmoment().format('HH:mm:ss');
Результат:
14:30:00
Форматирование становится полезным при комбинировании нескольких токенов в единую строку.
moment().format('dddd, DD MMMM YYYY, HH:mm');
Пример результата:
четверг, 21 май 2026, 14:30
Шаблон интерпретируется посимвольно: все символы, не являющиеся токенами, остаются без изменений.
Если необходимо включить фиксированный текст, используется квадратные скобки:
moment().format('[Дата:] DD-MM-YYYY');
Результат:
Дата: 21-05-2026
Любой текст внутри [] не интерпретируется как
токены.
Moment.js учитывает локализацию при выводе названий месяцев и дней недели.
moment.locale('ru');
moment().format('dddd, MMMM');
Результат:
четверг, май
Изменение локали влияет только на текстовые элементы, не затрагивая числовые значения.
При использовании hh важно добавлять индикатор времени
суток:
moment().format('hh:mm A');
Результат:
02:30 PM
Без A результат будет неполным с точки зрения
интерпретации времени.
В практической разработке часто используются стандартные комбинации:
DD.MM.YYYY
Пример:
21.05.2026
YYYY-MM-DD HH:mm:ss
Пример:
2026-05-21 14:30:00
dddd, D MMMM YYYY
Пример:
четверг, 21 май 2026
Moment.js строго различает регистр символов:
M — месяцm — минутыОшибочное использование приводит к некорректному результату:
moment().format('MM:mm');
Результат:
05:30
Здесь первый токен — месяц, второй — минуты.
Любые символы, не являющиеся токенами, могут использоваться без экранирования, если не совпадают с токенами Moment.js.
moment().format('YYYY/MM/DD [время] HH:mm');
Результат:
2026/05/21 время 14:30
Несмотря на гибкость отображения, для передачи данных часто используется строгий формат:
moment().format('YYYY-MM-DDTHH:mm:ssZ');
Результат:
2026-05-21T14:30:00+06:00
Такой формат совместим с большинством API и баз данных.