Метод getMoment

Метод getMoment представляет собой удобный инструмент для работы с выбранной датой в формате объекта moment.js. Он является частью API библиотеки Pikaday и позволяет получать текущее состояние календаря в формате, совместимом с популярной библиотекой для работы с датами и временем.

Синтаксис

pikadayInstance.getMoment();
  • pikadayInstance — экземпляр календаря, созданный с помощью конструктора new Pikaday({ ... }).
  • Возвращает объект moment, который отражает текущую выбранную дату. Если дата не была выбрана, возвращается null.

Основные свойства и возможности

  1. Совместимость с moment.js Объект, возвращаемый методом getMoment, полностью поддерживает все методы moment.js: форматирование, арифметику с датами, сравнение дат, манипуляции с временными зонами.

    var pikaday = new Pikaday({ field: document.getElementById('datepicker') });
    var selectedMoment = pikaday.getMoment();
    
    if (selectedMoment) {
        console.log(selectedMoment.format('YYYY-MM-DD')); // вывод выбранной даты
    }
  2. Отсутствие даты Если пользователь еще не выбрал дату, метод возвращает null. Это важно учитывать при использовании метода в логике приложения.

    var selectedMoment = pikaday.getMoment();
    if (!selectedMoment) {
        console.log('Дата не выбрана');
    }
  3. Управление форматами Метод не принимает параметры — все форматирование выполняется с помощью методов moment.js. Например:

    var formattedDate = pikaday.getMoment().format('DD.MM.YYYY');
    console.log(formattedDate);

    Это обеспечивает гибкость и позволяет легко интегрировать Pikaday в существующие приложения, где требуется конкретный формат даты.

Примеры использования

Пример 1: Сравнение выбранной даты с текущей датой

var today = moment();
var selected = pikaday.getMoment();

if (selected && selected.isBefore(today)) {
    console.log('Выбранная дата в прошлом');
} else if (selected && selected.isAfter(today)) {
    console.log('Выбранная дата в будущем');
} else {
    console.log('Выбрана текущая дата');
}

Пример 2: Добавление дней к выбранной дате

var selected = pikaday.getMoment();
if (selected) {
    var newDate = selected.add(7, 'days');
    console.log('Дата через 7 дней:', newDate.format('YYYY-MM-DD'));
}

Пример 3: Использование в валидации формы

var selected = pikaday.getMoment();
if (!selected) {
    alert('Необходимо выбрать дату!');
} else if (selected.isBefore(moment(), 'day')) {
    alert('Выбранная дата не может быть в прошлом');
}

Важные особенности

  • Метод getMoment возвращает копию объекта даты, а не ссылку на внутреннее состояние календаря. Это предотвращает случайные изменения даты в Pikaday при манипуляции объектом moment.
  • При использовании getMoment нет необходимости вручную конвертировать строку из поля ввода — объект сразу готов к обработке.
  • Для правильной работы требуется, чтобы moment.js был подключен в проекте. В случае отсутствия библиотеки метод вернет undefined.

Интеграция с другими методами Pikaday

Метод getMoment удобно использовать совместно с методами setMoment, getDate и toString:

  • setMoment(momentObj) — устанавливает выбранную дату на основе объекта moment.
  • getDate() — возвращает стандартный объект JavaScript Date.
  • toString(format) — возвращает строковое представление даты с указанным форматом.

Пример интеграции:

var pikaday = new Pikaday({ field: document.getElementById('datepicker') });
var selected = pikaday.getMoment();

if (selected) {
    pikaday.setMoment(selected.add(1, 'month')); // смещение даты на месяц вперед
    console.log(pikaday.toString('YYYY-MM-DD'));
}

Рекомендации по использованию

  • Использовать getMoment всегда для работы с моментами даты, когда требуется форматирование, арифметика или сравнение.
  • Проверять возвращаемое значение на null, чтобы избежать ошибок в логике приложения.
  • Совмещать с методами setMoment и toString для полной гибкости при управлении датами.

Метод getMoment является ключевым для интеграции Pikaday с moment.js, обеспечивая мощный и удобный механизм работы с датами внутри календаря.