У меня есть этот код:Почему SimpleDateFormat («MM/dd/yyyy») анализирует дату до 10/20/20128?
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
dateFormat.setLenient(false);
Date date = dateFormat.parse("10/20/20128");
, и я ожидаю, что вызов dateFormat.parse бросить ParseException с года я обеспечиваю 5 символов вместо 4, как в формате я определен. Но по какой-то причине даже при условии, что lenient установлен на false, этот вызов возвращает объект Date из 10/20/20128.
Почему? Это не имеет большого значения для меня. Есть ли еще одна настройка, чтобы сделать ее еще более строгой?
Если нужно разобрать его на 4 цифры, а не на 5, это будет не год. –
Я верю, что если вы беспокоитесь о том, чтобы сделать его 4-кратным пользователем, или что-то не так, вам нужно будет проверить это, прежде чем устанавливать значение даты. – sealz
Я не хочу, чтобы он анализировал его до 4 цифр, я хочу, чтобы он завершился неудачей (дайте мне исключение), потому что значение, которое я предоставляю, не соответствует формату точной даты. – goe