Есть дата в формате «ДД.ММ.ГГГГ». Необходимо проверить, чтобы дата была корректной, т.е. чтобы не было 31.02.2020
Раньше я использовал сложную регулярку «^([012][1-9]|[3][01])\\.([0][1-9]|[1][012])\\.(20[0-9][0-9]|2100)$» (год от 2000 до 2100), которая к тому же не обрабатывала данный вариант.
Решение — создать булевский метод, который будет проверять валидность даты:


	public static boolean isDateValid(String date) {

		SimpleDateFormat myFormat = new SimpleDateFormat("dd.MM.yyyy");
		myFormat.setLenient(false);
		try {
			myFormat.parse(date);
			return true;
		} catch (Exception e) {
			return false;
		}

	}

Теперь если дата указана, как 31 февраля, то метод возвращает false:

	System.out.println(isDateValid("31.02.2017")); // false
	System.out.println(isDateValid("25.02.2017")); // true
Реклама