Строка на дату (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 4:44:44 PM");
Это вернуло ноль, как ожидалось.

Date dtWrong = toDateStarted ("2016/7/1 4:44:44 PM");
это вернуло неправильную дату "вт дек 07 16:44:44 EST 168"

В этом последнем и важном случае введенная дата "2016/7/1 16:44:44 PM" имеет неверный формат. Я прохожу 2016/7/1 вместо 01.07.2016, и поэтому я думал, что ParseException будет происходить, но никогда не происходило.

После ПОПЫТКИ... dtStarted = "Вт дек 07 16:44:44 ОЦЕНКА 168", и я получил его, как только вернулся.

Время правильное (16:44 = 4:44 вечера), однако Дата (год, месяц, день) совершенно неверна.

Мне нужно избегать какого-либо преобразования, если входная дата (dateStarted) не так СТРОГО, как в шаблоне SimpleDateFormat.

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

0 ответов

Другие вопросы по тегам