Форматирование года, месяца и дня

Базовый принцип форматирования дат

В 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

Используется в ситуациях, где форматирование должно быть более «человеческим», без фиксированной ширины.


Комбинирование года, месяца и дня

Наиболее частая задача — формирование полной даты в различных форматах отображения.

Стандарт ISO-подобный формат

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

Форматирование всегда детерминировано исходным значением объекта.