Форматирование и разбор дат в Day.js основаны на системе токенов — специальных символов, которые описывают структуру вывода или парсинга даты. Каждый токен представляет собой отдельный компонент времени или форматирования, который подставляется при обработке объекта даты.
Day.js использует строковые шаблоны, где последовательности символов интерпретируются как инструкции для формирования строки даты.
Ключевые особенности:
Пример базового использования:
dayjs().format('YYYY-MM-DD')
Год представлен несколькими вариантами, различающимися уровнем детализации.
| Токен | Описание | Пример |
|---|---|---|
| YYYY | Полный год (4 цифры) | 2026 |
| YY | Последние 2 цифры года | 26 |
| Y | Год (ISO-совместимый формат) | 2026 |
Особенность токена Y заключается в поддержке расширенных календарных систем и отрицательных лет.
Месяцы представлены как числовыми, так и текстовыми токенами.
| Токен | Описание | Пример |
|---|---|---|
| MM | Месяц с ведущим нулём | 01–12 |
| M | Месяц без ведущего нуля | 1–12 |
| MMM | Краткое название месяца | Jan |
| MMMM | Полное название месяца | January |
При локализации значения MMM и MMMM зависят от текущей языковой настройки Day.js.
Day.js различает день месяца и день недели как отдельные сущности.
| Токен | Описание | Пример |
|---|---|---|
| DD | День с ведущим нулём | 01–31 |
| D | День без ведущего нуля | 1–31 |
| Do | День месяца с порядковым суффиксом | 1st, 2nd, 3rd |
Токен Do требует подключения дополнительного плагина
advancedFormat.
| Токен | Описание | Пример |
|---|---|---|
| d | День недели (0–6) | 0 |
| dd | Сокращённое название | Su |
| ddd | Краткое название | Sun |
| dddd | Полное название | Sunday |
Нумерация начинается с воскресенья (0), если не переопределена локалью.
Временные токены делятся на 12-часовой и 24-часовой форматы.
| Токен | Описание | Пример |
|---|---|---|
| HH | Часы (00–23) | 14 |
| H | Часы (0–23) | 4 |
| Токен | Описание | Пример |
|---|---|---|
| hh | Часы (01–12) | 02 |
| h | Часы (1–12) | 2 |
| A | AM/PM в верхнем регистре | PM |
| a | am/pm в нижнем регистре | pm |
Использование 12-часового формата требует обязательного указания AM/PM для однозначности времени.
| Токен | Описание | Пример |
|---|---|---|
| mm | Минуты с ведущим нулём | 05 |
| m | Минуты | 5 |
| ss | Секунды с ведущим нулём | 09 |
| s | Секунды | 9 |
Эти токены применяются в большинстве временных форматов.
| Токен | Описание | Пример |
|---|---|---|
| S | Сотые доли секунды | 0–9 |
| SS | Десятки миллисекунд | 00–99 |
| SSS | Миллисекунды | 000–999 |
Чем больше символов S, тем выше точность отображения.
Day.js не включает полноценную работу с часовыми поясами в базовой конфигурации, но через плагины добавляются дополнительные токены.
| Токен | Описание | Пример |
|---|---|---|
| Z | Смещение от UTC | +05:00 |
| ZZ | Смещение без двоеточия | +0500 |
Работа с часовыми поясами требует подключения utc и
timezone плагинов.
Расширенные токены используются для бизнес-логики и аналитики.
| Токен | Описание | Пример |
|---|---|---|
| Q | Квартал года | 1–4 |
| Qo | Порядковый квартал | 1st–4th |
| W | Неделя года | 1–53 |
| WW | Неделя с ведущим нулём | 01–53 |
Недели зависят от ISO-стандарта при использовании соответствующих настроек.
Любые символы, которые не должны интерпретироваться как токены, заключаются в квадратные скобки.
Пример:
dayjs().format('[Сегодня:] DD-MM-YYYY')
Результат:
Сегодня: 23-05-2026
Скобки отключают парсинг содержимого внутри них.
Токены можно свободно комбинировать для создания сложных форматов.
Пример:
dayjs().format('dddd, DD MMMM YYYY, HH:mm:ss')
Результат:
Saturday, 23 May 2026, 14:05:09
Такие конструкции используются для генерации пользовательских строк отображения даты.
При разборе строки Day.js ориентируется на строгие соответствия токенов:
Invalid Date.Пример некорректного использования:
dayjs('2026-99-99', 'YYYY-MM-DD')
Результат будет недопустимой датой.
Некоторые токены зависят от активной локали:
Подключение локали изменяет только текстовые представления, не влияя на числовую интерпретацию.
При использовании плагинов появляются дополнительные токены:
X — Unix timestamp (секунды)x — Unix timestamp (миллисекунды)Пример:
dayjs().format('X')
Вывод:
1716471909
Эти токены применяются для интеграции с API и базами данных.
Составление шаблонов требует баланса между читаемостью и точностью:
Пример универсального формата:
YYYY-MM-DDTHH:mm:ssZ
Он соответствует ISO-подобной структуре и широко применяется в обмене данными.