Что это такое
Day.js — минималистичная библиотека для работы с датами и временем в JavaScript. Ее главный ход — API, знакомый пользователям Moment.js, но в компактной реализации с неизменяемыми объектами и подключаемыми плагинами. Поэтому Day.js часто выбирают в проектах, где хочется оставить привычный стиль операций с датами, но не тащить тяжелую зависимость.
Репозиторий появился в 2018 году, когда экосистема JavaScript активно уходила от Moment.js к более легким решениям. Day.js не пытается быть встроенным стандартом для всех случаев; он закрывает частую задачу: распарсить дату, изменить ее, отформатировать, локализовать и сделать это предсказуемо.
Что внутри
Внутри — ядро библиотеки, плагины, локализации, тесты и документация. Базовый пакет остается маленьким, а дополнительные возможности вроде UTC, duration, relative time или advanced format подключаются отдельно. Это помогает держать размер клиентского кода под контролем.
Форматирование и цепочка операций
Пример показывает, чем Day.js похож на Moment.js: операции можно связывать в цепочку, а исходный объект не меняется.
import dayjs from "dayjs";
const invoiceDate = dayjs("2026-06-10");
const dueDate = invoiceDate.add(14, "day");
console.log(invoiceDate.format("YYYY-MM-DD"));
console.log(dueDate.format("DD MMM YYYY"));
Где полезен
Day.js подходит для интерфейсов, форм, отчетов, календарей, личных кабинетов и любых мест, где нужно показывать дату человеку. Он особенно удобен при миграции старого кода с Moment.js, потому что многие приемы остаются узнаваемыми.
Ограничения
Даты и время сложнее, чем кажется: часовые пояса, календарные правила, локали и длительности быстро добавляют нюансы. Day.js хорошо закрывает повседневные задачи, но для тяжелой календарной логики или строгих временных моделей может потребоваться внимательная настройка плагинов или другой инструмент.