Проверка даты не работает должным образом.Если день = 90, месяц = 1 и год = 1990 Проверка не работает.Это переключает дату на март, без проверки.Как я могу это проверить?
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); Date date; try { date = formatter.parse(day + "/" + month + "/" + year); } catch (ParseException e) { error = Boolean.TRUE; errorMessage = "Invalid date"; return null; }
Посмотрите на метод setLenient(), который по умолчанию тупо равен true.
setLenient()
true
Тем не менее, я думаю, что все еще есть некоторые проблемы, даже если он установлен на false.Возможно, вы захотите взглянуть на JodaTime, что делает это намного проще.
false
Вы что-то упустили.Simpledataformat просто проверит формат данных.Дата будет перенесена, если дата недействительна (30 февраля становится 1 марта).Поэтому после проверки формата также проверьте, совпадает ли дата.
(! Sdf.format (date) .equals (dateString)) {errorMessage = "Дата, указанная вами, недействительна.";вернуть ложь;}