java.time
Я хотел бы дать современный ответ.Когда этот вопрос был задан в 2011 году, было разумно использовать SimpleDateFormat
и Date
.Это больше неЭти классы всегда были плохо спроектированы и были заменены на java.time, современный Java-API даты и времени, в 2014 году, поэтому они давно устарели.
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd-MM-uuuu");
String dateString = "13-13-2007";
LocalDate date = LocalDate.parse(dateString, dateFormatter);
Этот код дает ожидаемое вами исключение (иимел вескую причину ожидать):
Исключение в потоке "main" java.time.format.DateTimeParseException: текст '13 -13-2007 'не может быть проанализирован: недопустимое значение для MonthOfYear (допустимые значения1 - 12): 13
Также обратите внимание и получите точное и информативное сообщение об исключении.
DateTimeFormatter
имеет три так называемых стиля распознавателя: строгий, умный и снисходительный.Умный по умолчанию, и вам редко понадобится что-нибудь еще.Используйте строгий режим, если вы хотите быть уверенным в том, что при любых обстоятельствах все недопустимые даты будут фиксироваться.
Ссылки