Примеры использования

Работа с датами в Day.js начинается с создания объекта даты. Библиотека предоставляет унифицированный интерфейс для парсинга, преобразования и форматирования времени.

import dayjs from 'dayjs';

const now = dayjs();
const specificDate = dayjs('2026-01-15');
const fromTimestamp = dayjs(1700000000000);

Ключевые сценарии:

  • создание текущей даты
  • парсинг строки
  • преобразование Unix timestamp

Форматирование выполняется через метод 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');

Типовые единицы измерения:

  • year
  • month
  • day
  • hour
  • minute
  • second

Практическое применение включает расчёт дедлайнов, планирование событий и временные сдвиги.

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.YYYY
  • YYYY-MM-DD HH:mm
  • dddd, MMMM D

Работа с ISO и стандартами

Поддержка 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"

Типовые выражения:

  • «несколько минут назад»
  • «через 2 часа»
  • «3 дня назад»

Манипуляции с началом и концом периода

Методы 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

Такое поведение критично для:

  • функционального программирования
  • React-состояний
  • предсказуемости логики

Парсинг нестандартных форматов

При работе с пользовательским вводом используются различные форматы дат.

dayjs('15/01/2026', 'DD/MM/YYYY');
dayjs('2026.01.15', 'YYYY.MM.DD');

Применение:

  • формы ввода
  • импорт данных
  • обработка CSV и API ответов