Библиотека Day.js предоставляет компактный и удобный механизм
форматирования дат. Основной метод для преобразования объекта даты в
строку — format().
const dayjs = require('dayjs')
const date = dayjs()
console.log(date.format())
Результат:
2026-05-23T14:30:45+06:00
Без аргументов метод format() возвращает дату в формате
ISO 8601.
Метод format() принимает строку с шаблоном. Каждый
символ или группа символов обозначают отдельную часть даты.
dayjs().format('YYYY-MM-DD')
Результат:
2026-05-23
| Токен | Описание | Пример |
|---|---|---|
YY |
Короткий год | 26 |
YYYY |
Полный год | 2026 |
dayjs().format('YY')
dayjs().format('YYYY')
| Токен | Описание | Пример |
|---|---|---|
M |
Месяц без нуля | 5 |
MM |
Месяц с нулём | 05 |
MMM |
Краткое название месяца | May |
MMMM |
Полное название месяца | May |
dayjs().format('MM')
dayjs().format('MMMM')
| Токен | Описание | Пример |
|---|---|---|
D |
День без нуля | 3 |
DD |
День с нулём | 03 |
dayjs().format('DD')
| Токен | Описание | Пример |
|---|---|---|
d |
Номер дня недели | 0 |
dd |
Короткое имя | Su |
ddd |
Сокращённое имя | Sun |
dddd |
Полное имя | Sunday |
dayjs().format('dddd')
| Токен | Описание | Пример |
|---|---|---|
H |
Часы 24-часового формата | 0-23 |
HH |
Часы с ведущим нулём | 00-23 |
h |
Часы 12-часового формата | 1-12 |
hh |
Часы 12-часового формата с нулём | 01-12 |
dayjs().format('HH:mm')
| Токен | Описание | Пример |
|---|---|---|
m |
Минуты | 5 |
mm |
Минуты с нулём | 05 |
s |
Секунды | 9 |
ss |
Секунды с нулём | 09 |
dayjs().format('HH:mm:ss')
| Токен | Описание | Пример |
|---|---|---|
SSS |
Миллисекунды | 125 |
dayjs().format('HH:mm:ss.SSS')
| Токен | Описание | Пример |
|---|---|---|
A |
Верхний регистр | AM |
a |
Нижний регистр | am |
dayjs().format('hh:mm A')
| Токен | Описание | Пример |
|---|---|---|
Z |
Смещение | +06:00 |
ZZ |
Смещение без двоеточия | +0600 |
dayjs().format('YYYY-MM-DD HH:mm:ss Z')
Токены можно объединять в произвольные шаблоны.
dayjs().format('DD.MM.YYYY')
23.05.2026
dayjs().format('YYYY/MM/DD HH:mm')
2026/05/23 14:45
dayjs().format('dddd, D MMMM YYYY')
Saturday, 23 May 2026
Любой текст внутри квадратных скобок выводится без обработки.
dayjs().format('[Сегодня:] DD.MM.YYYY')
Результат:
Сегодня: 23.05.2026
Без квадратных скобок Day.js воспринимает символы как токены.
По умолчанию библиотека использует английскую локаль. Для русского языка требуется подключение локали.
require('dayjs/locale/ru')
После подключения локаль активируется методом
locale().
dayjs.locale('ru')
Теперь форматирование будет выполняться на русском языке.
dayjs().format('D MMMM YYYY')
Результат:
23 мая 2026
Для работы с готовыми локализованными форматами используется плагин
LocalizedFormat.
const dayjs = require('dayjs')
const localizedFormat = require('dayjs/plugin/localizedFormat')
dayjs.extend(localizedFormat)
L, LL,
LLL, LLLL| Токен | Пример |
|---|---|
L |
23.05.2026 |
LL |
23 мая 2026 г. |
LLL |
23 мая 2026 г., 14:30 |
LLLL |
суббота, 23 мая 2026 г., 14:30 |
dayjs().format('LLLL')
Day.js позволяет строить собственные стандарты форматирования.
dayjs().format('YYYY-MM-DD HH:mm:ss')
dayjs().format('[LOG] YYYY-MM-DD HH:mm:ss.SSS')
dayjs().format('DD.MM.YYYY HH:mm')
dayjs().format('YYYY-MM-DDTHH:mm:ssZ')
Для работы с UTC используется плагин utc.
const utc = require('dayjs/plugin/utc')
dayjs.extend(utc)
dayjs.utc().format()
Результат:
2026-05-23T08:30:00Z
dayjs.utc().format('YYYY-MM-DD HH:mm:ss')
Для поддержки временных зон используется плагин
timezone.
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs().tz('Europe/Moscow').format()
dayjs().tz('Asia/Almaty').format('YYYY-MM-DD HH:mm:ss Z')
Плагин AdvancedFormat добавляет дополнительные
токены.
const advancedFormat = require('dayjs/plugin/advancedFormat')
dayjs.extend(advancedFormat)
| Токен | Описание |
|---|---|
Q |
Квартал |
Do |
День месяца с суффиксом |
k |
Часы от 1 до 24 |
X |
Unix Timestamp |
x |
Timestamp в миллисекундах |
dayjs().format('Do MMMM YYYY')
Результат:
23rd May 2026
Day.js поддерживает форматирование Unix-времени.
dayjs().format('X')
dayjs().format('x')
Плагин relativeTime используется для вывода времени
относительно текущего момента.
const relativeTime = require('dayjs/plugin/relativeTime')
dayjs.extend(relativeTime)
fromNow()dayjs().subtract(3, 'hour').fromNow()
Результат:
3 hours ago
require('dayjs/locale/ru')
dayjs.locale('ru')
dayjs().subtract(3, 'hour').fromNow()
Результат:
3 часа назад
Плагин duration применяется для отображения промежутков
времени.
const duration = require('dayjs/plugin/duration')
dayjs.extend(duration)
const duration = dayjs.duration({
hours: 2,
minutes: 30
})
duration.toISOString()
Результат:
PT2H30M
dayjs().format('mm')
mm — минуты, а не месяц.
Правильно:
dayjs().format('MM')
DD и
ddDD // день месяца
dd // короткий день недели
Некоторые токены работают только после подключения плагинов.
dayjs().format('LLLL')
Без LocalizedFormat формат не будет распознан.
DD.MM.YYYY
MM/DD/YYYY
YYYY-MM-DD
YYYY-MM-DD HH:mm:ss
HH:mm
D MMMM YYYY
Day.js использует практически идентичную систему форматирования, что упрощает миграцию с Moment.js.
moment().format('YYYY-MM-DD')
dayjs().format('YYYY-MM-DD')
Синтаксис совпадает, однако Day.js имеет значительно меньший размер и модульную архитектуру.
const DATE_FORMAT = 'YYYY-MM-DD'
const DATETIME_FORMAT = 'YYYY-MM-DD HH:mm:ss'
function formatDate(date) {
return dayjs(date).format(DATE_FORMAT)
}
const formats = {
api: 'YYYY-MM-DD',
ui: 'DD.MM.YYYY',
log: 'YYYY-MM-DD HH:mm:ss.SSS'
}
Day.js создавался как лёгкая альтернатива тяжёлым библиотекам работы с датами. Форматирование выполняется быстро благодаря:
Это делает библиотеку удобной для frontend-приложений, серверного JavaScript и мобильных интерфейсов.