Я создал следующую функцию, чтобы преобразовать строку в дату, но мне нужно поймать любую ошибку при этом и поэтому вернуть ноль.
public static Date toDateStarted(String dateStarted) {
Date dtStarted = null;
SimpleDateFormat dtFormat = new SimpleDateFormat("MM/dd/yyyy h:mm:ss a");
try {
dtStarted = dtFormat.parse(dateStarted);
} catch (ParseException e) {
dtStarted = null;
}
return dtStarted;
}
Date dtError = toDateStarted("error/7/1 16:44:44");
Как и ожидалось, возвращено значение null.
Date dtWrong = toDateStarted("2016/7/1 16:44:44");
это вернуло неправильную дату "Вторник, 07 декабря, 16:44:44 EST 168"
В этом последнем и важном случае дата ввода «2016/7/1 16:44:44» имеет неверный формат. Я прохожу 2016/7/1 вместо 7/1/2016, и поэтому я думал, что ParseException произойдет, но этого не произошло.
После ПОПЫТКИ... dtStarted = "Вт, 07 декабря, 16:44:44 EST 168", и поэтому я получил это, как только вернулся.
Время правильное (16:44 = 16:44), однако дата (год, месяц, день) совершенно неверна.
Мне нужно избегать любых преобразований, если дата ввода (dateStarted) не такая СТРУКТУРНАЯ, как в шаблоне SimpleDateFormat.
Что я должен делать? Оптимизации приветствуются.