Проверка правильности разбора даты - PullRequest
2 голосов
/ 30 марта 2010

У меня есть этот код для проверки правильности даты или нет, но она не проверяет все случаи. Например, когда text = "03/03/2009", поскольку эта дата не существует в формате "дд / мм / гггг", она анализирует дату как 01.03.2010. Есть ли способ изменить это поведение и получить исключение, когда я пытаюсь проанализировать дату, которая не является правильной? Какой лучший способ сделать эту проверку?

public static final String DATE_PATTERN = "dd/MM/yyyy";

public static boolean isDate(String text){
     SimpleDateFormat formatter = new SimpleDateFormat(DATE_PATTERN);
     ParsePosition position = new ParsePosition(0);
     formatter.parse(text, position);
     if(position.getIndex() != text.length()){
         return false;
     }else{
        return true;
     }
}

Спасибо.

Ответы [ 2 ]

7 голосов
/ 30 марта 2010

Перед синтаксическим анализом необходимо установить значение lenient равным false, иначе анализатор «угадает» и попытается исправить недопустимые даты

formatter.setLenient(false);

Выезд http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html#setLenient(boolean)

0 голосов
/ 30 марта 2010

По моему мнению, лучший способ проверить дату - это использовать регулярные выражения, здесь вы можете найти множество из них и для проверки дат http://regexlib.com/DisplayPatterns.aspx Java имеет хорошую поддержку регулярных выражений, некоторые уроки здесь http://java.sun.com/docs/books/tutorial/essential/regex/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...