Что такое date-fns?

date-fns — это современная JavaScript‑библиотека утилит для работы с датами, предоставляющая комплексный, согласованный и надёжный набор инструментов для работы с датами в JavaScript. В отличие от встроенного объекта JavaScript Date, который имеет множество особенностей и несоответствий, date-fns предлагает модульный, функциональный подход к манипуляциям с датами. Библиотека поддерживает tree‑shakeable‑режим, то есть в ваш пакет попадают только те функции, которые действительно используются, что минимизирует размер сборки. Библиотека содержит более 200 функций, охватывающих всё — от форматирования и парсинга до сравнения, изменения и локализации дат.

Зачем использовать песочницу date-fns?

Работа с датами в JavaScript может быть сложной — часовые пояса, шаблоны форматирования и арифметика дат часто приводят к неожиданным результатам. Песочница позволяет экспериментировать с функциями date-fns в реальном времени, видеть мгновенный вывод и изучать API без настройки полноценного проекта. Это идеальный способ тестировать строки форматирования, отлаживать расчёты дат или быстро прототипировать логику работы с датами перед интеграцией в приложение.

Описание инструмента

Песочница date-fns — интерактивная среда кодирования, позволяющая писать и выполнять JavaScript‑код с полностью предзагруженной библиотекой date-fns. Весь набор функций доступен через объект dateFns, предоставляющий доступ к более чем 200 функциям. Код исполняется автоматически по мере ввода (с дебаунсом), а все выводы console.log, console.warn и console.error отображаются во встроенном терминале под редактором. Это делает её идеальной для изучения date-fns, тестирования операций с датами и экспериментов с различными вариантами форматирования.

Примеры

Форматировать текущую дату:

const now = new Date();
console.log(dateFns.format(now, "MMMM do, yyyy"));
// Вывод: 30 декабря 2025 г.

Подсчитать количество дней между двумя датами:

const start = new Date(2025, 0, 1);
const end = new Date(2025, 11, 31);
console.log(dateFns.differenceInDays(end, start) + " дней");
// Вывод: 364 дней

Добавить время к дате:

const today = new Date();
const nextWeek = dateFns.addWeeks(today, 1);
const nextMonth = dateFns.addMonths(today, 1);
console.log("Следующая неделя:", dateFns.format(nextWeek, "yyyy-MM-dd"));
console.log("Следующий месяц:", dateFns.format(nextMonth, "yyyy-MM-dd"));

Проверить, находится ли дата в прошлом или будущем:

const date = new Date(2024, 5, 15);
console.log("Прошло?", dateFns.isPast(date));
console.log("Будущее?", dateFns.isFuture(date));

Парсить строку даты:

const parsed = dateFns.parse("25/12/2025", "dd/MM/yyyy", new Date());
console.log(dateFns.format(parsed, "EEEE, MMMM do, yyyy"));
// Вывод: Четверг, 25 декабря 2025 г.

Возможности

  • Полная библиотека date-fns: Доступ ко всем более чем 200 функциям date-fns через объект dateFns
  • Выполнение кода в реальном времени: Код запускается автоматически по мере ввода с интеллектуальной задержкой
  • Встроенный терминал: Просмотр вывода консоли мгновенно без инструментов разработчика браузера
  • Подсветка синтаксиса: Подсветка синтаксиса JavaScript для лучшей читаемости кода
  • Обработка ошибок: Ошибки выполнения отображаются чётко в выводе терминала

Сценарии использования

  • Изучение date-fns: Экспериментируйте с различными функциями и сразу видьте результаты без настройки проекта
  • Тестирование форматов дат: Пробуйте разные строки формата, чтобы найти точный шаблон вывода, который вам нужен
  • Прототипирование расчётов дат: Тестируйте сложные арифметические операции с датами, такие как добавление рабочих дней, поиск интервалов или сравнение дат
  • Отладка логики дат: Изолируйте и тестируйте фрагменты кода, связанные с датами, из ваших проектов
  • Быстрые конвертации дат: Конвертируйте между форматами дат или вычисляйте разницу во времени «на лету»

Распространённые функции date-fns

Функция Описание Пример
format Форматировать дату в строку dateFns.format(date, "yyyy-MM-dd")
parse Преобразовать строку в дату dateFns.parse("2025-01-01", "yyyy-MM-dd", new Date())
addDays Добавить дни к дате dateFns.addDays(date, 7)
subMonths Вычесть месяцы из даты dateFns.subMonths(date, 3)
differenceInDays Получить количество дней между датами dateFns.differenceInDays(dateA, dateB)
isAfter Проверить, находится ли дата после другой dateFns.isAfter(dateA, dateB)
isBefore Проверить, находится ли дата до другой dateFns.isBefore(dateA, dateB)
startOfMonth Получить первый день месяца dateFns.startOfMonth(date)
endOfYear Получить последний момент года dateFns.endOfYear(date)
formatDistance Человекочитаемая разница во времени dateFns.formatDistance(dateA, dateB)

Справочник токенов формата

Токен Описание Пример
yyyy Год из 4 цифр 2025
MM Месяц из 2 цифр 01‑12
MMMM Полное название месяца January
dd День из 2 цифр 01‑31
do День с порядковым суффиксом 1‑й, 2‑й, 3‑й
EEEE Полное название дня недели Monday
EEE Краткое название дня недели Mon
HH Час в 24‑часовом формате 00‑23
hh Час в 12‑часовом формате 01‑12
mm Минуты 00‑59
ss Секунды 00‑59
a AM/PM AM, PM