Метод setDate в библиотеке Pikaday используется для
программного управления выбранной датой календаря. Он позволяет
установить дату без взаимодействия пользователя с интерфейсом, что
делает его ключевым инструментом для синхронизации состояния datepicker
с внешними данными приложения.
Основная задача метода — обновление внутреннего состояния экземпляра календаря и, при необходимости, синхронизация отображения и событий.
picker.setDate(date, preventOnSelect);
Где:
date — устанавливаемая датаpreventOnSelect — логический флаг, определяющий, будет
ли вызван обработчик onSelectdateВ качестве первого аргумента может использоваться несколько типов значений:
Date — стандартный объект JavaScript датыstring — строка, интерпретируемая парсером Pikadaynull — сброс выбранной датыpicker.setDate(new Date(2026, 0, 15));
В данном случае устанавливается 15 января 2026 года. Важно учитывать, что месяцы в JavaScript начинаются с нуля.
picker.setDate('2026-01-15');
Строковое значение будет преобразовано в дату с использованием встроенного парсера или кастомного формата, если он задан в настройках экземпляра.
picker.setDate(null);
Использование null очищает выбранную дату и возвращает
календарь в состояние без активного выбора.
preventOnSelectВторой параметр управляет поведением событийной модели:
picker.setDate(date, true);
true — предотвращает вызов onSelectfalse или отсутствие параметра — вызывает
onSelect при изменении датыЭто критически важно при программной синхронизации данных, когда изменение даты не должно триггерить бизнес-логику.
При вызове setDate происходят следующие внутренние
действия:
Если передана дата, выходящая за пределы minDate или
maxDate, поведение зависит от конфигурации: дата может быть
проигнорирована или автоматически скорректирована.
onSelectconst picker = new Pikaday({
onSelect: function(date) {
console.log('Выбрана дата:', date);
}
});
picker.setDate(new Date(2026, 5, 10));
В данном случае обработчик onSelect будет вызван
автоматически.
Однако при использовании:
picker.setDate(new Date(2026, 5, 10), true);
вызов onSelect подавляется, что позволяет избежать
циклических обновлений при двусторонней привязке данных.
Программное использование setDate отличается от выбора
даты пользователем:
setDate может подавлять событияЭто различие используется при интеграции с формами, где требуется контролируемое обновление состояния.
Если экземпляр Pikaday настроен с параметром toString
или format, setDate влияет только на
внутренний объект даты, но не напрямую на строковое представление.
const picker = new Pikaday({
format: 'DD.MM.YYYY'
});
picker.setDate('2026-12-01');
В этом случае строка преобразуется в Date, а отображение
формируется согласно заданному формату.
При передаче строкового значения применяется следующий порядок интерпретации:
Date.parseНевалидные строки приводят к игнорированию установки или установке некорректного состояния (в зависимости от версии и конфигурации).
Метод учитывает ограничения:
minDatemaxDatedisableDayFndisableWeekendsПример:
const picker = new Pikaday({
minDate: new Date(2026, 0, 1),
maxDate: new Date(2026, 11, 31)
});
picker.setDate(new Date(2025, 0, 1));
Если дата выходит за диапазон, она не будет установлена.
Если устанавливается дата, идентичная текущей, Pikaday может:
picker.setDate(new Date(2026, 6, 20));
picker.setDate(new Date(2026, 6, 20));
Второй вызов часто не приводит к изменениям состояния.
getDateМетод setDate тесно связан с getDate,
который возвращает текущее значение:
picker.setDate(new Date(2026, 3, 10));
const current = picker.getDate();
Оба метода формируют основу управления состоянием календаря, обеспечивая двустороннюю синхронизацию.
В сценариях с формами метод применяется для:
fetch('/api/date')
.then(res => res.json())
.then(data => {
picker.setDate(new Date(data.date), true);
});
DatepreventOnSelect в реактивных
системахПри интеграции с moment.js или аналогами часто используется предварительное преобразование:
picker.setDate(moment('2026-08-01').toDate());
Это позволяет унифицировать работу с датами в разных форматах и источниках данных.
Метод setDate выполняет роль центрального механизма
изменения состояния календаря, объединяя:
его поведение определяется комбинацией входного значения, конфигурации экземпляра и флагов управления событиями.