Работа с датами в Day.js начинается с создания объекта даты. Библиотека предоставляет унифицированный интерфейс для парсинга, преобразования и форматирования времени.
import dayjs from 'dayjs';
const now = dayjs();
const specificDate = dayjs('2026-01-15');
const fromTimestamp = dayjs(1700000000000);
Ключевые сценарии:
Форматирование выполняется через метод format, где
используются токены:
const date = dayjs('2026-01-15');
date.format('YYYY-MM-DD'); // 2026-01-15
date.format('DD.MM.YYYY'); // 15.01.2026
date.format('MMMM D, YYYY'); // January 15, 2026
Day.js позволяет выполнять операции сложения и вычитания времени через цепочку методов.
const base = dayjs('2026-01-15');
const nextWeek = base.add(7, 'day');
const previousMonth = base.subtract(1, 'month');
const futureHours = base.add(12, 'hour');
Типовые единицы измерения:
yearmonthdayhourminutesecondПрактическое применение включает расчёт дедлайнов, планирование событий и временные сдвиги.
const deadline = dayjs().add(3, 'day').add(5, 'hour');
Сравнение дат используется для фильтрации событий и построения логики интерфейса.
const a = dayjs('2026-01-10');
const b = dayjs('2026-01-15');
a.isBefore(b); // true
a.isAfter(b); // false
a.isSame(b); // false
Сравнение с точностью до единицы времени:
const x = dayjs('2026-01-15 10:00');
const y = dayjs('2026-01-15 18:00');
x.isSame(y, 'day'); // true
x.isSame(y, 'hour'); // false
Применение:
Расчёт разницы между датами используется в аналитике и пользовательских интерфейсах.
const start = dayjs('2026-01-01');
const end = dayjs('2026-01-15');
end.diff(start, 'day'); // 14
end.diff(start, 'hour'); // 336
Получение остатка времени до события:
const event = dayjs('2026-12-31');
const now = dayjs();
const daysLeft = event.diff(now, 'day');
Day.js активно применяется для вывода дат в UI, где требуется локализованный или читаемый формат.
dayjs('2026-01-15').format('DD MMMM YYYY'); // 15 January 2026
dayjs().format('HH:mm:ss'); // текущее время
Типовые шаблоны:
DD.MM.YYYYYYYY-MM-DD HH:mmdddd, MMMM DПоддержка ISO-формата позволяет безопасно обмениваться датами между системами.
const iso = dayjs().toISOString();
const parsed = dayjs(iso);
Использование в API:
Хотя базовый Day.js не включает полноценную поддержку таймзон, плагины расширяют функциональность.
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
dayjs.extend(utc);
dayjs.extend(timezone);
dayjs().tz('Europe/Moscow').format();
Применение:
Относительное время используется для интерфейсов социальных сетей и уведомлений.
import relativeTime from 'dayjs/plugin/relativeTime';
dayjs.extend(relativeTime);
dayjs().from(dayjs('2026-01-01')); // "in 15 days" / "15 days ago"
Типовые выражения:
Методы startOf и endOf используются для
нормализации дат.
dayjs('2026-01-15 10:45').startOf('day'); // 2026-01-15 00:00
dayjs('2026-01-15 10:45').endOf('day'); // 2026-01-15 23:59:59
Применение:
Day.js поддерживает композицию операций в одном выражении.
const result = dayjs()
.add(2, 'day')
.subtract(3, 'hour')
.startOf('hour')
.format('YYYY-MM-DD HH:mm');
Такие цепочки используются для:
В прикладной разработке часто требуется комбинировать несколько операций.
const registrationDate = dayjs('2025-12-01');
const isActive = dayjs().diff(registrationDate, 'day') < 30;
Другой сценарий:
const eventDate = dayjs('2026-06-01');
const reminderDate = eventDate.subtract(7, 'day');
reminderDate.format('YYYY-MM-DD');
Day.js возвращает новые экземпляры при каждом изменении, что исключает побочные эффекты.
const base = dayjs('2026-01-15');
const modified = base.add(1, 'day');
base.format('YYYY-MM-DD'); // 2026-01-15
modified.format('YYYY-MM-DD'); // 2026-01-16
Такое поведение критично для:
При работе с пользовательским вводом используются различные форматы дат.
dayjs('15/01/2026', 'DD/MM/YYYY');
dayjs('2026.01.15', 'YYYY.MM.DD');
Применение: