Строка в дату (STRICT преобразование)

Я создал следующую функцию, чтобы преобразовать строку в дату, но мне нужно поймать любую ошибку при этом и поэтому вернуть ноль.

   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.

Что я должен делать? Оптимизации приветствуются.


person G305    schedule 08.07.2016    source источник
comment
Возможный дубликат Почему SimpleDateFormat анализирует неправильную дату?   -  person Mike M.    schedule 09.07.2016