Библиотека Day.js используется для работы с датами и временем в JavaScript и поставляется как небольшой, быстрый и совместимый аналог более тяжёлых решений. Первым шагом является добавление библиотеки в проект.
В проектах Node.js и современных фронтенд-сборках библиотека устанавливается стандартно:
npm install dayjs
После установки модуль становится доступен для импорта:
import dayjs from 'dayjs';
или в CommonJS-среде:
const dayjs = require('dayjs');
Для работы в браузере без сборщика можно использовать 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-строки и многие распространённые форматы дат.
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'));
Поддерживаемые единицы:
daymonthyearhourminutesecondconst 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'));
Оригинальный объект остаётся неизменным, что упрощает предсказуемость кода.
const date = dayjs();
console.log(date.toISOString());
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-приложениях.