Метод toFormat в библиотеке Luxon используется для
преобразования объектов даты и времени в строковое представление по
заданному шаблону. Он является одним из основных инструментов
форматирования и предоставляет гибкий механизм управления выводом дат
без необходимости ручной сборки строк.
В основе работы метода лежит система токенов форматирования — специальных символов, которые заменяются на соответствующие части даты: год, месяц, день, часы, минуты, секунды и другие элементы временной метки.
Метод вызывается у экземпляра DateTime:
DateTime.toFormat(formatString)
formatString представляет собой строку, содержащую набор
токенов Luxon.
Пример:
import { DateTime } from "luxon";
const dt = DateTime.local(2026, 1, 15, 10, 30);
const result = dt.toFormat("dd-MM-yyyy");
console.log(result); // 15-01-2026
Каждый токен в строке форматирования заменяется на соответствующее значение даты.
Luxon использует предсказуемую систему токенов, которая позволяет точно управлять выводом.
y — год без ведущих нулейyy — последние две цифры годаyyyy — полный годПример:
dt.toFormat("yyyy"); // 2026
dt.toFormat("yy"); // 26
M — номер месяца (1–12)MM — месяц с ведущим нулёмMMM — краткое название месяцаMMMM — полное название месяцаdt.toFormat("MM"); // 01
dt.toFormat("MMMM"); // January
d — день без нуляdd — день с нулёмdt.toFormat("d"); // 15
dt.toFormat("dd"); // 15
Luxon поддерживает 24-часовой и 12-часовой формат.
H — 24-часовой формат без нуляHH — 24-часовой с нулёмh — 12-часовой без нуляhh — 12-часовой с нулёмdt.toFormat("HH:mm"); // 10:30
dt.toFormat("hh:mm"); // 10:30 (12h формат)
m — минутыmm — минуты с нулёмs — секундыss — секунды с нулёмdt.toFormat("HH:mm:ss"); // 10:30:00
Токены комбинируются в произвольном порядке, формируя сложные шаблоны.
dt.toFormat("dd/MM/yyyy HH:mm");
// 15/01/2026 10:30
dt.toFormat("MMMM dd, yyyy");
// January 15, 2026
Метод toFormat не выполняет автоматическую локализацию в
стиле toLocaleString, но поддерживает локализованные
названия месяцев и дней недели при корректно заданной локали в объекте
DateTime.
const dt = DateTime.local(2026, 1, 15).setLocale("ru");
dt.toFormat("MMMM");
// январь
Локаль влияет на текстовые токены (MMMM,
EEE и подобные), но не изменяет структуру числовых
форматов.
Поддерживаются следующие токены:
E — день недели (1–7)EEE — краткое название дняEEEE — полное название дняdt.toFormat("EEEE");
// Thursday (или "четверг" при ru-локали)
Сложные шаблоны часто включают текстовые вставки. В Luxon текст фиксируется в одинарных кавычках.
dt.toFormat("dd 'of' MMMM yyyy");
// 15 of January 2026
Любой текст вне токенов остаётся неизменным.
Если необходимо использовать символы, совпадающие с токенами, они заключаются в кавычки.
dt.toFormat("HH 'hours' mm 'minutes'");
// 10 hours 30 minutes
Без экранирования Luxon может интерпретировать символы как токены.
S — миллисекундыSSS — миллисекунды с фиксированной длинойconst dt = DateTime.local(2026, 1, 15, 10, 30, 0, 123);
dt.toFormat("HH:mm:ss.SSS");
// 10:30:00.123
При построении форматов важно учитывать баланс между читаемостью и точностью. Структурированные шаблоны позволяют унифицировать вывод дат в приложениях.
dt.toFormat("yyyy-MM-dd HH:mm:ss");
// 2026-01-15 10:30:00
Такой формат часто используется в логировании и базах данных.
dt.toFormat("dd MMMM yyyy");
// 15 January 2026
При смене локали меняется только текстовая часть:
dt.setLocale("ru").toFormat("dd MMMM yyyy");
// 15 января 2026
dt.toFormat("dd/MM HH:mm");
// 15/01 10:30
Используется в компактных интерфейсах, где важна плотность информации.
Метод toFormat не выполняет автоматического приведения
типов или валидации строк формата. Переданный шаблон интерпретируется
буквально, и некорректные токены не преобразуются в значения.
Также отсутствует автоматическое добавление разделителей — все символы должны быть явно указаны в формате.
toFormat часто используется вместе с другими методами
DateTime:
setLocale — управление языком выводаsetZone — управление часовым поясомplus и minus — изменение даты перед
форматированиемdt.plus({ days: 3 }).toFormat("yyyy-MM-dd");
Такой подход позволяет формировать динамические строки на основе вычисленных дат.
В системах, где требуется единообразие отображения, шаблоны
toFormat выносятся в константы:
const FORMAT_FULL = "yyyy-MM-dd HH:mm:ss";
const FORMAT_SHORT = "dd/MM/yyyy";
dt.toFormat(FORMAT_FULL);
Это снижает вероятность ошибок и упрощает поддержку кода.
В прикладной разработке форматирование через toFormat
применяется в:
Единый формат обеспечивает согласованность представления времени во всех слоях приложения.