Библиотека Day.js строит все объекты даты вокруг единственной функции
— dayjs(). Она возвращает неизменяемый объект, содержащий
момент времени с точностью до миллисекунд.
import dayjs from 'dayjs';
const d = dayjs();
Вызов без аргументов создаёт объект, соответствующий текущему времени системы. Это базовая точка входа, от которой строятся все остальные варианты создания дат.
При отсутствии параметров dayjs() всегда
интерпретируется как момент вызова:
const now = dayjs();
Каждое последующее создание будет фиксировать новое значение времени, так как объект не хранит ссылку на «живую» дату, а представляет конкретный момент.
Day.js поддерживает разбор строк в формате ISO 8601 без дополнительных настроек:
const date = dayjs('2026-01-15');
const datetime = dayjs('2026-01-15T10:30:00');
Поддерживаемые варианты включают:
YYYY-MM-DDYYYY-MM-DDTHH:mm:ssСтрока автоматически парсится через встроенный механизм JavaScript
Date, поэтому корректность зависит от стандарта
формата.
При передаче нестандартных строк результат может стать невалидным объектом даты.
Day.js напрямую оборачивает стандартный объект Date:
const jsDate = new Date(2026, 0, 15, 10, 30);
const d = dayjs(jsDate);
Это один из самых надёжных способов интеграции с внешними API и
нативными библиотеками JavaScript, которые возвращают
Date.
Важно: Day.js не копирует ссылку на объект — он создаёт собственное представление момента времени.
Поддерживается создание даты из количества миллисекунд, прошедших с 1 января 1970 года UTC:
const d = dayjs(1700000000000);
Если требуется работа с секундами, их необходимо предварительно преобразовать:
const seconds = 1700000000;
const d = dayjs(seconds * 1000);
Timestamp является наиболее универсальным способом передачи даты между системами, так как не зависит от локали и формата строки.
Если передать некорректную строку или значение, Day.js создаёт объект с состоянием invalid:
const d = dayjs('not-a-date');
Проверка выполняется через метод:
d.isValid();
Результат false означает, что дата не была
распознана.
Для разбора нестандартных строк используется плагин
customParseFormat.
Подключение:
import dayjs from 'dayjs';
import customParseFormat from 'dayjs/plugin/customParseFormat';
dayjs.extend(customParseFormat);
После подключения становится доступен разбор форматов вручную:
const d = dayjs('15-01-2026', 'DD-MM-YYYY');
Также поддерживается строгий режим:
const strict = dayjs('15/01/2026', 'DD-MM-YYYY', true);
Строгий режим требует полного соответствия формату.
Для работы с универсальным временем применяется utc
плагин:
import utc from 'dayjs/plugin/utc';
dayjs.extend(utc);
Создание даты в UTC:
const d = dayjs.utc('2026-01-15T10:30:00Z');
или из timestamp:
const d = dayjs.utc(1700000000000);
UTC-объекты позволяют избежать смещения, связанного с локальной временной зоной.
Каждый объект Day.js является иммутабельным, поэтому операции не изменяют исходный экземпляр. Однако создание копии возможно через вызов функции:
const original = dayjs('2026-01-15');
const copy = dayjs(original);
Оба объекта будут независимыми представлениями одного и того же момента времени.
Каждое создание объекта в Day.js возвращает новый экземпляр, независимо от источника данных:
Изменение состояния всегда приводит к созданию нового объекта, что исключает побочные эффекты:
const a = dayjs('2026-01-15');
const b = a.add(1, 'day');
a остаётся неизменным, а b содержит новое
значение времени.
При создании даты библиотека использует следующий порядок обработки:
DateТакая последовательность обеспечивает предсказуемость поведения при разных типах входных данных.
Передача нуля как timestamp создаёт дату начала Unix-эпохи:
const d = dayjs(0);
Результат соответствует:
Это значение часто используется как базовая точка отсчёта в системах хранения времени.
Day.js делегирует интерпретацию некорректных дат встроенному
Date, поэтому:
dayjs('2026-99-99');
может привести к автоматической нормализации или invalid-состоянию в зависимости от среды выполнения.
Создание объекта Day.js всегда сводится к преобразованию входных данных в внутренний timestamp, после чего формируется неизменяемая структура, представляющая конкретный момент времени в глобальной временной шкале.