Метод setMoment является удобным инструментом для
установки даты в календаре Pikaday с использованием объектов библиотеки
Moment.js. В отличие от метода setDate,
который работает с объектами JavaScript Date,
setMoment позволяет напрямую интегрировать календарь с
мощной системой обработки дат Moment.js, обеспечивая гибкость в
форматировании, локализации и манипуляциях с датами.
pikadayInstance.setMoment(momentDate);
Параметры:
momentDate — объект типа Moment из
библиотеки Moment.js, представляющий дату, которую требуется установить
в календаре.Возвращаемое значение: Метод возвращает текущий экземпляр Pikaday, что позволяет использовать цепочку вызовов методов (chaining).
Установка даты календаря: Метод напрямую
изменяет текущую выбранную дату календаря на переданную дату Moment.js.
При этом автоматически обновляется отображение календаря и связанное
текстовое поле (если оно указано в опции field при
инициализации Pikaday).
Синхронизация с объектами Moment.js: Любые
операции с датами, выполненные через Moment.js (например, добавление
дней, изменение месяца или года), можно безопасно применять к Pikaday
через setMoment. Это позволяет использовать весь спектр
возможностей Moment.js при работе с календарём.
Автоматическая валидация: Если переданная дата
выходит за пределы minDate или maxDate,
Pikaday корректно ограничивает значение и не допускает установки
недопустимой даты.
// Создание экземпляра Pikaday
var picker = new Pikaday({
field: document.getElementById('datepicker'),
format: 'DD.MM.YYYY',
minDate: new Date(2020, 0, 1),
maxDate: new Date(2030, 11, 31)
});
// Создание объекта Moment.js
var momentDate = moment('2026-06-02', 'YYYY-MM-DD');
// Установка даты через setMoment
picker.setMoment(momentDate);
В данном примере календарь устанавливает выбранную дату на 2
июня 2026 года и обновляет текстовое поле с указанным форматом
DD.MM.YYYY.
Pikaday поддерживает локализацию через Moment.js. Если установлен
соответствующий язык, метод setMoment автоматически
отображает дату в соответствии с локализацией:
moment.locale('ru');
var picker = new Pikaday({ field: document.getElementById('datepicker') });
picker.setMoment(moment('2026-06-02'));
В этом случае календарь корректно отображает дни недели и названия месяцев на русском языке, при этом выбранная дата синхронизирована с объектом Moment.js.
setMoment не создает новый объект даты внутри Pikaday,
а использует предоставленный объект Moment.js как источник информации о
дате.setMoment значение, возвращаемое методом
getDate, будет объектом Date, соответствующим
выбранной дате.setMoment(null) — это очистит выбранное значение календаря
и текстовое поле (если поле было задано).setDate| Особенность | setDate |
setMoment |
|---|---|---|
| Тип аргумента | Date |
Moment |
| Форматирование | Зависит от формата Pikaday | Позволяет использовать форматирование Moment.js |
| Локализация | Зависит от Pikaday | Поддержка локализации через Moment.js |
| Совместимость | Чистый JavaScript | Интеграция с Moment.js |
Использование setMoment особенно оправдано, когда проект
уже активно использует Moment.js для обработки и форматирования дат, так
как это снижает необходимость конвертации между Date и
Moment вручную.
YYYY-MM-DD), сразу создавать объект Moment и передавать
его в setMoment.add, subtract, startOf,
endOf.moment.locale(), а затем вызвать
setMoment.Метод setMoment обеспечивает плавную интеграцию Pikaday
с библиотекой Moment.js, упрощая работу с динамическими, локализованными
и форматированными датами.