В Day.js преобразование даты в строку выполняется через метод
format(). Он использует строковый шаблон, состоящий из
токенов, каждый из которых отвечает за отдельную часть даты. Основная
особенность подхода — предсказуемость: один и тот же шаблон всегда даёт
одинаковый результат для одной и той же даты.
Пример базового использования:
import dayjs from 'dayjs';
const date = dayjs('2026-05-22');
const result = date.format('YYYY-MM-DD');
Здесь:
YYYY — полный годMM — месяц с ведущим нулёмDD — день с ведущим нулёмРезультат: 2026-05-22
Day.js поддерживает несколько вариантов отображения года в зависимости от задачи.
dayjs().format('YYYY');
Пример:
2026
Используется в большинстве случаев, когда требуется четырёхзначное представление года.
dayjs().format('YY');
Пример:
26
Такой формат применяется в компактных интерфейсах или при совместимости с устаревшими системами.
Месяц в Day.js может отображаться в числовом и текстовом виде.
dayjs().format('MM');
Пример:
05
dayjs().format('M');
Пример:
5
Разница важна при формировании строк фиксированной длины и при сериализации дат.
Для текстового отображения месяца используется локализация.
dayjs().format('MMMM');
Пример:
май
Также доступен сокращённый вариант:
dayjs().format('MMM');
Пример:
май
(в русском локале сокращения часто совпадают с полным названием, но в других языках отличаются)
День месяца также поддерживает два основных варианта представления.
dayjs().format('DD');
Пример:
22
Если значение меньше 10, добавляется ноль:
05
dayjs().format('D');
Пример:
22
Используется в ситуациях, где форматирование должно быть более «человеческим», без фиксированной ширины.
Наиболее частая задача — формирование полной даты в различных форматах отображения.
dayjs().format('YYYY-MM-DD');
Пример:
2026-05-22
Этот формат используется в API, базах данных и логах.
dayjs().format('DD.MM.YYYY');
Пример:
22.05.2026
dayjs().format('MM/DD/YYYY');
Пример:
05/22/2026
Day.js не ограничивает выбор разделителей. Любые символы вне токенов воспринимаются как текст.
dayjs().format('YYYY/MM/DD');
dayjs().format('YYYY-MM-DD');
dayjs().format('YYYY.MM.DD');
dayjs().format('DD | MM | YYYY');
Результаты:
2026/05/22
2026-05-22
2026.05.22
22 | 05 | 2026
Форматирование месяца и дня недели зависит от подключённого языка.
import 'dayjs/locale/ru';
dayjs.locale('ru');
После установки локали текстовые представления начинают соответствовать выбранному языку:
dayjs().format('D MMMM YYYY');
Пример:
22 мая 2026
Day.js различает регистр символов в токенах:
MM — месяцmm — минуты (не относится к теме даты, но часто
вызывает ошибки)DD — день месяцаdd — сокращение дня неделиОшибочное использование приводит к некорректному выводу:
dayjs().format('mm'); // не месяц
В Day.js ведущие нули контролируются выбором токена:
| Токен | Поведение |
|---|---|
YYYY |
4 цифры года |
MM |
01–12 |
M |
1–12 |
DD |
01–31 |
D |
1–31 |
Это позволяет гибко формировать строки без дополнительной обработки.
YYYY-MM-DD
D MMMM YYYY
DD.MM.YY
DD / MM / YYYY
Формат можно задавать переменной:
const format = 'YYYY-MM-DD';
const output = dayjs().format(format);
Это позволяет адаптировать отображение даты под настройки интерфейса или пользователя без изменения логики кода.
Day.js не изменяет саму дату при форматировании. Любой вызов
format() работает только с представлением:
const date = dayjs('2026-01-01');
date.format('YYYY'); // 2026
date.format('MM'); // 01
date.format('DD'); // 01
Форматирование всегда детерминировано исходным значением объекта.