Первая программа с Day.js

Библиотека Day.js используется для работы с датами и временем в JavaScript и поставляется как небольшой, быстрый и совместимый аналог более тяжёлых решений. Первым шагом является добавление библиотеки в проект.

Установка через npm

В проектах Node.js и современных фронтенд-сборках библиотека устанавливается стандартно:

npm install dayjs

После установки модуль становится доступен для импорта:

import dayjs from 'dayjs';

или в CommonJS-среде:

const dayjs = require('dayjs');

Подключение через CDN

Для работы в браузере без сборщика можно использовать CDN:

<script src="https://unpkg.com/dayjs@1.11.10/dayjs.min.js"></script>
<script>
  const now = dayjs();
  console.log(now.format());
</script>

После подключения глобальный объект dayjs становится доступен напрямую.


Создание первой даты

Базовая точка входа — вызов функции dayjs(), которая возвращает объект даты-обёртки.

import dayjs from 'dayjs';

const now = dayjs();
console.log(now.toString());

Результат представляет текущую дату и время в момент выполнения.

Создание из строки

const date = dayjs('2026-01-01');
console.log(date.format());

Day.js поддерживает ISO-строки и многие распространённые форматы дат.

Создание из timestamp

const date = dayjs(1700000000000);
console.log(date.format());

Форматирование даты

Одной из ключевых возможностей является преобразование даты в строку нужного формата.

const date = dayjs('2026-01-01');

console.log(date.format('YYYY-MM-DD'));
console.log(date.format('DD.MM.YYYY'));
console.log(date.format('HH:mm:ss'));

Основные токены форматирования

  • YYYY — год
  • MM — месяц
  • DD — день
  • HH — часы
  • mm — минуты
  • ss — секунды

Пример комбинированного формата:

const now = dayjs();
console.log(now.format('YYYY-MM-DD HH:mm:ss'));

Получение компонентов даты

Объект Day.js позволяет извлекать отдельные части даты.

const date = dayjs('2026-05-22 14:30:00');

console.log(date.year());
console.log(date.month()); // месяцы начинаются с 0
console.log(date.date());
console.log(date.hour());
console.log(date.minute());
console.log(date.second());

Особенность: метод month() возвращает значение от 0 до 11, где 0 — январь.


Изменение даты

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

Добавление времени

const date = dayjs('2026-01-01');

const future = date.add(7, 'day');
console.log(future.format('YYYY-MM-DD'));

Поддерживаемые единицы:

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

Уменьшение времени

const date = dayjs('2026-01-10');

const past = date.subtract(5, 'day');
console.log(past.format('YYYY-MM-DD'));

Сравнение дат

Сравнение выполняется через специальные методы.

const a = dayjs('2026-01-01');
const b = dayjs('2026-01-10');

console.log(a.isBefore(b));
console.log(b.isAfter(a));
console.log(a.isSame(b));

Также можно уточнять единицу измерения:

a.isBefore(b, 'day');

Проверка корректности даты

const valid = dayjs('2026-01-01').isValid();
const invalid = dayjs('invalid-date').isValid();

console.log(valid);
console.log(invalid);

Метод isValid() позволяет избежать ошибок при обработке пользовательского ввода.


Работа с текущим временем

const now = dayjs();

console.log(now.format('YYYY-MM-DD HH:mm:ss'));
console.log(now.valueOf());

Метод valueOf() возвращает timestamp в миллисекундах.


Клонирование объектов

Каждый вызов методов изменения возвращает новый экземпляр.

const base = dayjs('2026-01-01');
const modified = base.add(1, 'month');

console.log(base.format('YYYY-MM-DD'));
console.log(modified.format('YYYY-MM-DD'));

Оригинальный объект остаётся неизменным, что упрощает предсказуемость кода.


Преобразование в разные форматы

ISO строка

const date = dayjs();
console.log(date.toISOString());

Unix timestamp

const date = dayjs();
console.log(date.unix());

Разбор пользовательского ввода

const input = '2026-12-31';
const parsed = dayjs(input);

if (parsed.isValid()) {
  console.log(parsed.format('DD.MM.YYYY'));
}

Day.js автоматически пытается интерпретировать строку, но при нестандартных форматах требуется осторожность.


Работа с относительным временем (базовый уровень)

Без подключаемых плагинов библиотека остаётся минималистичной, но позволяет выполнять базовые вычисления разницы через арифметику дат.

const start = dayjs('2026-01-01');
const end = dayjs('2026-01-10');

const diff = end.diff(start, 'day');
console.log(diff);

Метод diff() возвращает разницу в выбранной единице измерения.


Цепочки вызовов

Day.js поддерживает последовательное применение методов.

const result = dayjs('2026-01-01')
  .add(2, 'day')
  .subtract(1, 'hour')
  .format('YYYY-MM-DD HH:mm');

console.log(result);

Каждый шаг возвращает новый объект, формируя цепочку преобразований.


Особенности работы с месяцами и годами

const date = dayjs('2026-01-31');

const nextMonth = date.add(1, 'month');
console.log(nextMonth.format('YYYY-MM-DD'));

При переходе между месяцами с разной длиной дней возможна автоматическая корректировка даты, что важно учитывать при расчётах календарных значений.


Использование в серверной среде

const dayjs = require('dayjs');

function logTime() {
  const timestamp = dayjs().format('YYYY-MM-DD HH:mm:ss');
  console.log(timestamp);
}

logTime();

Библиотека одинаково работает как в браузере, так и в Node.js, что делает её универсальным инструментом для обработки времени в JavaScript-приложениях.