Параметр defaultHour и defaultMinute

Назначение и базовая логика

defaultHour задаёт час, который будет установлен в компоненте выбора времени при инициализации календаря, если пользователь ещё не ввёл значение и не передана стартовая дата (defaultDate).

Ключевая особенность поведения:

  • применяется только при включённом выборе времени (enableTime: true)
  • используется исключительно как стартовое значение
  • не переопределяет уже заданную дату или время, если они переданы явно

Иными словами, параметр формирует «начальное состояние» часов в UI-компоненте.


Поведение при инициализации

При создании экземпляра Flatpickr порядок определения времени можно описать так:

  1. Если задан defaultDate с временем — он имеет приоритет
  2. Если defaultHour указан — используется он
  3. Если не указано ничего — применяется значение по умолчанию (обычно 0 или текущее время, в зависимости от конфигурации и режима)

Пример:

flatpickr("#input", {
  enableTime: true,
  defaultHour: 14
});

Результат:

  • при открытии календаря час будет установлен на 14

Взаимодействие с enableTime

defaultHour не имеет смысла без активации временного режима:

flatpickr("#input", {
  enableTime: true,
  defaultHour: 9
});

Если enableTime: false:

flatpickr("#input", {
  defaultHour: 9
});

Параметр игнорируется, поскольку интерфейс времени не создаётся.


Приоритеты значений времени

Flatpickr использует строгую систему приоритетов:

  • defaultDate (если содержит время)
  • пользовательский ввод
  • defaultHour + defaultMinute
  • внутреннее значение по умолчанию

Это важно при работе с формами, где значение может приходить из нескольких источников: сервер, состояние приложения, пользовательский ввод.


Типичные сценарии использования

1. Стандартизированное время начала

Используется в формах записи, где время должно начинаться с фиксированного значения:

flatpickr("#meetingTime", {
  enableTime: true,
  noCalendar: true,
  defaultHour: 10
});

2. Бизнес-логика рабочих часов

Часто комбинируется с ограничениями minTime и maxTime:

flatpickr("#appointment", {
  enableTime: true,
  defaultHour: 9,
  minTime: "09:00",
  maxTime: "18:00"
});

Здесь defaultHour задаёт стартовое визуальное положение, но не ограничивает выбор.


3. Предустановка пользовательского профиля

Если система хранит предпочтительное время:

const userPreferredHour = 16;

flatpickr("#reminder", {
  enableTime: true,
  defaultHour: userPreferredHour
});

Особенности поведения

Не изменяет уже установленное значение

Если пользователь ранее выбрал время, повторная инициализация не «перетирает» его:

defaultDate: "2026-05-30 12:00",
defaultHour: 18

Результат:

  • будет использовано 12:00, а не 18:00

Влияние на UI, а не на модель данных

Важно различать:

  • UI-инициализация (что видно при открытии)
  • модель значения (что хранится в input)

defaultHour влияет только на первое.


Работа с локалями и форматами времени

Параметр не зависит от:

  • локали (locale)
  • формата отображения (time_24hr)
  • парсинга строки

Он всегда интерпретируется как числовое значение часа в диапазоне 0–23.


Параметр defaultMinute в Flatpickr

Назначение

defaultMinute определяет стартовое значение минут при инициализации временного интерфейса.

Он работает аналогично defaultHour, но отвечает за минутную составляющую.


Базовое поведение

flatpickr("#input", {
  enableTime: true,
  defaultHour: 10,
  defaultMinute: 30
});

Результат:

  • при открытии времени будет установлено 10:30

Приоритет и взаимодействие

defaultMinute участвует в той же системе приоритетов:

  1. defaultDate (если содержит время)
  2. пользовательский ввод
  3. defaultHour + defaultMinute
  4. значения по умолчанию

Если указаны только минуты:

flatpickr("#input", {
  enableTime: true,
  defaultMinute: 45
});

Час будет взят из стандартного значения (обычно 0 или текущее время), а минуты станут 45.


Связь с шагом минут (minuteIncrement)

При использовании параметра шага:

flatpickr("#input", {
  enableTime: true,
  minuteIncrement: 15,
  defaultMinute: 7
});

Поведение:

  • интерфейс может округлить значение к ближайшему допустимому шагу
  • фактическое отображение станет 00, 15, 30, 45 или ближайшее соответствие

Таким образом, defaultMinute задаёт старт, но не отменяет ограничения.


Практические сценарии

1. Фиксированный старт записи

flatpickr("#lesson", {
  enableTime: true,
  defaultHour: 8,
  defaultMinute: 0
});

Используется для начала расписаний с «чистого часа».


2. Смещение по умолчанию

flatpickr("#call", {
  enableTime: true,
  defaultHour: 13,
  defaultMinute: 30
});

Применяется для стандартных полчасовых интервалов.


3. Работа с пользовательскими предпочтениями

const prefs = {
  hour: 17,
  minute: 45
};

flatpickr("#reminder", {
  enableTime: true,
  defaultHour: prefs.hour,
  defaultMinute: prefs.minute
});

Особенности интерпретации

Диапазон значений

  • допустимые значения: 0–59
  • выход за пределы может быть скорректирован библиотекой или проигнорирован

Не влияет на календарную часть

defaultMinute не изменяет:

  • дату
  • месяц
  • год

Он работает только в рамках временной оси.


Поведение при noCalendar

flatpickr("#timeOnly", {
  enableTime: true,
  noCalendar: true,
  defaultHour: 11,
  defaultMinute: 20
});

В этом режиме:

  • интерфейс содержит только время
  • defaultMinute становится визуально более значимым, так как календарная часть отсутствует

Совместная работа defaultHour и defaultMinute

Оба параметра образуют единый блок инициализации времени:

  • defaultHour → отвечает за «часовую ось»
  • defaultMinute → задаёт точность внутри часа

Их сочетание определяет стартовое состояние компонента, если отсутствуют более приоритетные значения.


Поведение при отсутствии параметров

Если оба параметра не заданы:

  • Flatpickr использует внутреннюю стратегию инициализации
  • часто это текущее время или 00:00, в зависимости от конфигурации

Влияние на пользовательский опыт

Корректная настройка defaultHour и defaultMinute позволяет:

  • уменьшить количество кликов при выборе времени
  • задать логически правильные стартовые значения
  • синхронизировать UI с бизнес-логикой приложения (расписания, бронирования, события)

Типичные ошибки при использовании

  • установка defaultHour без enableTime
  • игнорирование minuteIncrement, из-за чего значение визуально «скачет»
  • конфликт с defaultDate, который полностью перекрывает оба параметра