В библиотеке Flatpickr одной из ключевых возможностей является управление диапазоном допустимых дат. Параметр минимальной даты позволяет задать нижнюю границу выбора, исключая возможность выбора более ранних значений. Это используется в формах бронирования, регистрации событий, планирования задач и любых сценариях, где требуется контроль временных ограничений.
Минимальная дата задаётся через опцию minDate при
инициализации календаря. Значение может быть передано в нескольких
форматах: строка, объект Date или динамическая функция.
flatpickr("#dateInput", {
minDate: "2026-05-10"
});
В этом примере все даты до 10 мая 2026 года становятся недоступными для выбора. Пользователь сможет выбирать только даты, начиная с указанной границы.
Помимо строкового формата, допустимо использование объекта
Date. Это удобно при динамическом вычислении
ограничений.
const today = new Date();
flatpickr("#dateInput", {
minDate: today
});
В данном случае минимальная дата устанавливается равной текущему дню. Это исключает возможность выбора прошлых дат.
Если используется режим выбора времени
(enableTime: true), минимальная дата может учитывать и
временную составляющую. В таком случае ограничения применяются вплоть до
конкретного момента.
flatpickr("#dateTimeInput", {
enableTime: true,
minDate: "2026-05-30 14:30"
});
Такой подход позволяет ограничить выбор не только по дню, но и по точному времени, например, при бронировании или записи на прием.
Flatpickr поддерживает передачу функции в minDate. Это
дает возможность вычислять ограничение на основе логики приложения.
flatpickr("#dateInput", {
minDate: function() {
const date = new Date();
date.setDate(date.getDate() + 3);
return date;
}
});
Здесь минимальная дата устанавливается на три дня вперед от текущей даты. Такой механизм часто применяется в системах с задержкой обработки заявок или обязательным периодом ожидания.
В интерфейсах с несколькими календарями минимальная дата часто зависит от значения другого поля. Например, дата окончания не может быть раньше даты начала.
const startPicker = flatpickr("#start", {
onChange: function(selectedDates) {
endPicker.set("minDate", selectedDates[0]);
}
});
const endPicker = flatpickr("#end", {
minDate: null
});
При выборе даты начала автоматически обновляется минимальная дата второго календаря, исключая логически некорректные диапазоны.
Flatpickr поддерживает относительные строки, которые упрощают задания ограничений без ручных вычислений.
flatpickr("#dateInput", {
minDate: "today"
});
Также можно использовать смещения:
flatpickr("#dateInput", {
minDate: "2026-05-30 +3"
});
Это означает, что минимальная дата будет установлена на три дня позже указанной точки отсчета. Такой формат удобен при работе с фиксированными базовыми датами и смещениями.
Минимальная дата часто используется вместе с верхним ограничением, формируя допустимый диапазон выбора.
flatpickr("#dateInput", {
minDate: "2026-05-01",
maxDate: "2026-05-31"
});
В этом случае пользователь ограничен диапазоном одного месяца. Все даты вне этого интервала становятся недоступными.
Flatpickr позволяет изменять минимальную дату после инициализации без пересоздания экземпляра.
const picker = flatpickr("#dateInput", {
minDate: "today"
});
picker.set("minDate", "2026-06-01");
После вызова set календарь автоматически пересчитывает
доступные значения, обновляя состояние интерфейса.
При использовании строковых значений важно учитывать формат даты,
заданный в конфигурации dateFormat. Несовпадение форматов
может привести к некорректной интерпретации значения.
flatpickr("#dateInput", {
dateFormat: "d.m.Y",
minDate: "30.05.2026"
});
В таких случаях парсинг строки зависит от настроек локали и формата,
поэтому при сложных сценариях предпочтительнее использовать объект
Date.
В реальных приложениях минимальная дата редко является фиксированным значением. Чаще она вычисляется на основе правил:
flatpickr("#dateInput", {
minDate: function() {
const date = new Date();
let addedDays = 5;
// пример бизнес-логики: пропуск выходных
while (addedDays > 0) {
date.setDate(date.getDate() + 1);
const day = date.getDay();
if (day !== 0 && day !== 6) {
addedDays--;
}
}
return date;
}
});
Такой подход позволяет учитывать реальные ограничения предметной области, а не только технические параметры.
Даже при заданном minDate пользователь может попытаться
ввести дату вручную. Flatpickr выполняет валидацию введенного значения и
автоматически сбрасывает некорректные даты при потере фокуса поля. Это
обеспечивает целостность данных независимо от способа ввода.
Если требуется ограничить только календарную часть без учета времени, достаточно передать дату без временного компонента и отключить режим времени.
flatpickr("#dateInput", {
minDate: "2026-05-30",
enableTime: false
});
В таком режиме сравнение происходит исключительно по дню, без влияния часов и минут.
Если minDate не задан, ограничение нижней границы
отсутствует. Это означает, что доступны все прошлые и будущие даты,
включая исторические значения, что может быть критично для систем с
требованиями к корректности временных данных.
Flatpickr обрабатывает minDate совместно с рядом других
параметров, таких как disable, enable,
weekNumbers. При конфликте приоритет отдается более строгим
ограничениям, формирующим фактический набор доступных дат.
При использовании объектов Date важно учитывать
локальное время среды выполнения. При переходе между часовыми поясами
минимальная дата может смещаться, если не зафиксирована явно в
UTC-логике приложения. В таких случаях предпочтительнее использовать
строковые значения или нормализованные даты.
Ограничение нижней границы выбора формирует предсказуемое поведение интерфейса и снижает вероятность некорректного ввода. Это особенно важно в системах: