Синтаксис функции format в date-fns представляет собой
один из базовых механизмов преобразования объектов Date в
человекочитаемые строки. В отличие от нативных методов JavaScript, этот
подход использует строгую систему токенов, позволяющую точно управлять
отображением даты и времени.
Функция имеет следующий общий вид:
format(date, formatString, [options])
date Объект типа Date, который
необходимо преобразовать. Допустимы также значения, приводимые к дате
через конструктор Date.
formatString Строка шаблона, содержащая токены форматирования. Именно она определяет итоговый вид результата.
options (необязательный параметр) Объект конфигурации, включающий:
locale — локализация (для вывода месяцев, дней недели и
т.д.)В основе работы format лежит система токенов —
специальных символов, которые заменяются на соответствующие части
даты.
Например:
format(new Date(2026, 0, 15), 'yyyy-MM-dd')
Результат:
2026-01-15
Каждый токен имеет строго определённое значение. Токены чувствительны к регистру, что критически важно при работе с функцией.
y — годM — месяцd — день месяцаH — часы (24-часовой формат)h — часы (12-часовой формат)m — минутыs — секундыS — миллисекундыКомбинирование токенов позволяет формировать практически любой формат отображения даты.
Наиболее часто используемые варианты:
yy — две последние цифры годаyyyy — полный годПримеры:
format(date, 'yy') // 26
format(date, 'yyyy') // 2026
Месяцы имеют несколько форматов отображения:
M — номер месяца без ведущего нуляMM — номер месяца с ведущим нулёмMMM — сокращённое название месяцаMMMM — полное название месяцаПример:
format(date, 'MMMM yyyy')
Результат (в английской локали):
January 2026
При использовании локализации название месяца будет соответствовать выбранному языку.
d — день без ведущего нуляdd — день с ведущим нулёмformat(date, 'dd.MM.yyyy')
Date-fns различает два формата часов:
H / HH — 24-часовой форматh / hh — 12-часовой форматformat(date, 'HH:mm') // 14:30
format(date, 'hh:mm a') // 02:30 pm
m / mm — минутыs / ss — секундыS, SS, SSS —
миллисекундыПример:
format(date, 'HH:mm:ss.SSS')
Результат:
14:30:15.123
Токен a используется для обозначения периода суток:
ampmformat(date, 'hh:mm a')
Важно учитывать, что вывод зависит от локали и может изменяться.
Функция format поддерживает локализацию через объект
locale.
Пример использования:
import { format } from 'date-fns'
import { ru } from 'date-fns/locale'
format(date, 'd MMMM yyyy', { locale: ru })
Результат:
15 января 2026
Локализация влияет на:
При необходимости включить в строку форматирования произвольный текст используются одинарные кавычки.
Пример:
format(date, "yyyy 'год'")
Результат:
2026 год
Если внутри текста требуется использовать апостроф, он экранируется удвоением:
format(date, "yyyy 'don''t'")
Результат:
2026 don't
Date-fns предоставляет токены для отображения дня недели:
E — сокращённое название дняEEEE — полное название дняПример:
format(date, 'EEEE')
Результат (английская локаль):
Thursday
При использовании локали:
четверг
Функция format по умолчанию работает в локальном часовом
поясе среды выполнения JavaScript. Это означает:
Например, один и тот же объект Date может давать разные
визуальные результаты на устройствах с разными часовыми поясами.
Для работы с фиксированными временными зонами используется
дополнительный инструментарий, расширяющий базовые возможности
форматирования, однако сам format остаётся
локально-ориентированным.
format(date, 'yyyy-MM-dd')
format(date, 'yyyy-MM-dd HH:mm:ss')
format(date, 'd MMMM yyyy, HH:mm')
format(date, 'HH:mm:ss.SSS')
Комбинация токенов позволяет создавать гибкие представления:
format(date, "EEEE, d MMMM yyyy 'в' HH:mm")
Результат:
четверг, 15 января 2026 в 14:30
Такие шаблоны часто используются в интерфейсах, где требуется естественное отображение даты.
Токены чувствительны к регистру:
MM — месяцmm — минутыОшибка:
format(date, 'yyyy-mm-dd')
Результат будет содержать минуты вместо месяца.
Отсутствие кавычек приводит к интерпретации текста как токенов:
format(date, yyyy год)
Такой вызов некорректен.
Любой неподдерживаемый символ может быть проигнорирован или привести к неожиданному выводу.
Если передан некорректный объект даты, результат может быть:
Invalid DateПоэтому предварительная валидация даты часто становится необходимой частью обработки.
Функция format оптимизирована для частого использования
и не требует значительных вычислительных ресурсов. Однако при массовом
форматировании следует учитывать:
DateСтрока форматирования компилируется в набор операций, что позволяет библиотеке эффективно обрабатывать повторяющиеся вызовы с одинаковыми шаблонами.