Некорректная валидация rangeStart

Добрый день!
Устанавливаю setRangeStart на поле DateField и оно отрабатывает нормально. Но самый первый день периода rangeStart программа валидирует некорректно, выдавая сообщение: Выбранная дата находится за пределами допустимых значений. Выбирать дату дает. Пробовал удалять все валидаторы с поля, все равно валидация проходит с таким сообщением. Собственных валидаций на поле не прописывал. RangeStart устанавливаю программно через метод экрана onBeforeShow.

Calendar calendar = Calendar.getInstance(); calendar.setTime(getEditedEntity().getMonitorDate()); calendar.add(Calendar.DAY_OF_MONTH, 1); nextMonitorDateField.setRangeStart(calendar.getTime());

Решения по проблеме нет?

Добрый день, @Dimas!

Спасибо, что сообщили о данной проблеме. Когда вы устанавливаете rangeStart программно, то используется разрешение MILLISECOND. Например, если у вас monitorDate = 07.07.2020 15:36:47, то rangeStart будет 08.07.2020 15:36:47. А когда вы выберете с помощью календаря дату 08.07.2020, то она будет представлена в виде 08.07.2020 00:00:00 и поэтому rangeStart будет больше чем выбранная вами дата.

Модернизируйте свой пример следующим образом:

Calendar calendar = Calendar.getInstance(); calendar.setTime(getEditedEntity().getMonitorDate()); 
calendar.add(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR_OF_DAY, 0);
nextMonitorDateField.setRangeStart(calendar.getTime());

С уважением,
Глеб

1 симпатия

Спасибо большое.
Это решило проблему. Об этом я тоже сразу подумал. Просто забыл еще про миллисекунды