Метод getDate в библиотеке Pikaday предназначен для
получения текущего выбранного значения даты из экземпляра календаря.
Сигнатура метода:
picker.getDate()
Метод не принимает параметров и вызывается непосредственно у
экземпляра Pikaday, созданного через конструктор.
getDate используется для извлечения состояния выбора
даты из календаря, управляемого Pikaday. Это ключевой метод для
взаимодействия с внутренним состоянием компонента, когда требуется:
Метод работает с внутренним состоянием экземпляра, а не с DOM напрямую, что делает его предсказуемым и удобным для интеграции в архитектуры с разделением логики и представления.
Метод возвращает объект типа Date или
null.
Date — если пользователь выбрал дату;null — если выбор отсутствует (например, при
инициализации или после вызова clear()).Пример:
const selected = picker.getDate();
if (selected) {
console.log(selected.toISOString());
} else {
console.log('Дата не выбрана');
}
Важно учитывать, что возвращаемый объект является стандартным
JavaScript Date, а не строкой и не форматированным
значением.
При вызове getDate происходит обращение к внутреннему
состоянию экземпляра Pikaday, где хранится текущая выбранная дата. В
упрощённом виде логика можно представить следующим образом:
setDate,
она также фиксируется;null.Метод не выполняет преобразований формата и не зависит от настроек
отображения (format, toString, локализация).
Он всегда возвращает «сырое» значение.
getDate и toStringЧасто метод getDate путают с методами форматирования.
Однако их назначение принципиально различается.
getDate() — возвращает объект DatetoString() (в контексте Pikaday) — возвращает строковое
представление датыПример различия:
const dateObj = picker.getDate(); // Date
const dateStr = picker.toString(); // String
Использование getDate предпочтительно в логике
приложения, где требуется работа с датами как с объектами: сравнение,
арифметика, преобразования.
const form = document.querySelector('form');
form.addEventListener('submit', (e) => {
const date = picker.getDate();
if (!date) {
e.preventDefault();
alert('Не выбрана дата');
return;
}
document.querySelector('input[name="date"]').value = date.toISOString();
});
const selected = picker.getDate();
const min = new Date(2020, 0, 1);
const max = new Date(2030, 11, 31);
if (selected < min || selected > max) {
console.log('Дата вне допустимого диапазона');
}
setInterval(() => {
const date = picker.getDate();
if (date) {
document.querySelector('#output').textContent =
date.toLocaleDateString();
}
}, 500);
Если пользователь не взаимодействовал с календарём или значение было
сброшено, метод возвращает null. Это важная особенность,
требующая явной проверки.
Ошибочная практика:
const date = picker.getDate();
console.log(date.getFullYear()); // ошибка, если date == null
Корректный вариант:
const date = picker.getDate();
if (date) {
console.log(date.getFullYear());
}
setDate и clearМетод getDate напрямую зависит от следующих
операций:
setDate(date) — устанавливает выбранную дату;clear() — сбрасывает значение.Пример взаимодействия:
picker.setDate(new Date(2025, 5, 10));
console.log(picker.getDate()); // Date(2025-06-10)
picker.clear();
console.log(picker.getDate()); // null
Таким образом, getDate всегда отражает актуальное
состояние экземпляра.
Так как возвращается стандартный объект Date, важно
учитывать особенности Jav * aScript:
Date хранит момент времени в UTC;getDate, getMonth)
зависят от локального часового пояса среды выполнения;Пример потенциальной проблемы:
const date = picker.getDate();
console.log(date.toISOString());
В некоторых случаях дата может сместиться на предыдущий день при конвертации в UTC.
Метод не изменяет состояние, поэтому его можно вызывать многократно без побочных эффектов.
const a = picker.getDate();
const b = picker.getDate();
console.log(a === b); // true (одинаковый объект или эквивалентная ссылка)
Однако стоит учитывать, что возвращаемый объект может быть тем же самым экземпляром или копией в зависимости от внутренней реализации версии библиотеки.
На практике getDate часто применяется внутри
обработчиков событий:
picker = new Pikaday({
onSelect: function () {
const selected = this.getDate();
console.log(selected);
}
});
В данном случае getDate позволяет получить значение
сразу после изменения выбора пользователем.
getMoment (если используется Moment.js)В некоторых конфигурациях Pikaday может работать совместно с Moment.js. Тогда появляется альтернатива:
getDate() — возвращает DategetMoment() — возвращает объект Momentconst date = picker.getDate();
const momentDate = picker.getMoment();
Использование зависит от архитектуры приложения: либо нативные
Date, либо расширенные возможности Moment.
null;Date;getDate() как строки без явного
преобразования;| Состояние Pikaday | Результат getDate() |
|---|---|
| Только инициализация | null |
| Выбрана дата | Date |
После setDate() |
Date |
После clear() |
null |
| Повторный вызов | текущее значение |