Настройка форматов

Библиотека 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')

AM / PM

Токен Описание Пример
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')

Формат для API

dayjs().format('YYYY-MM-DDTHH:mm:ssZ')

Форматирование UTC

Для работы с UTC используется плагин utc.

Подключение

const utc = require('dayjs/plugin/utc')

dayjs.extend(utc)

Форматирование в UTC

dayjs.utc().format()

Результат:

2026-05-23T08:30:00Z

Кастомный UTC-формат

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

Плагин 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

Работа с Unix Timestamp

Day.js поддерживает форматирование Unix-времени.

Timestamp в секундах

dayjs().format('X')

Timestamp в миллисекундах

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
})

Получение ISO-формата

duration.toISOString()

Результат:

PT2H30M

Частые ошибки форматирования

Использование неправильного регистра

dayjs().format('mm')

mm — минуты, а не месяц.

Правильно:

dayjs().format('MM')

Путаница между DD и dd

DD // день месяца
dd // короткий день недели

Отсутствие плагина

Некоторые токены работают только после подключения плагинов.

dayjs().format('LLLL')

Без LocalizedFormat формат не будет распознан.


Практические шаблоны

Европейский формат даты

DD.MM.YYYY

Американский формат даты

MM/DD/YYYY

Международный ISO-формат

YYYY-MM-DD

Полная дата со временем

YYYY-MM-DD HH:mm:ss

Короткое время

HH:mm

Человекочитаемая дата

D MMMM YYYY

Сравнение с Moment.js

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 и мобильных интерфейсов.