2012-02-20 3 views
1

Я хотел бы уведомить пользователя, если он ввел дату вне диапазона (например, месяц = ​​22). Но dateFormat хранит в глобальном файле настроек, поэтому я не знаю точно положения поля месяца в строке ввода. Я пытался использовать метод getErrorOffset() из ParseException, но он всегда возвращается в крайнее положение (10) входной строкиSimpleDateFormat parse error position

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); 
    sdf.setLenient(false); 
    try 
    { 
     sdf.parse("22/12/2009"); 
    } 
    catch (ParseException ex) 
    { 
     ex.getErrorOffset(); 
    } 

Есть ли решение? ТНХ

ответ

0

Вы хотите превратить мягкий парсинг от:

sdf.setLenient(false); 

См the documentation

+0

Я хочу сообщить пользователю, в какой части даты он допустил ошибку. – turboDi

+0

И замените исключение «Невозможная дата:« 22/12/2009 »« до »Месяц должен быть в пределах 1 и 12 ' – turboDi

0

Смотрите docs:

Если произошла ошибка, то индекс поз не изменяется , индекс ошибки pos устанавливается в индекс символа, где произошла ошибка, и возвращается null.

+0

' SimpleDateFormat sdf = новый SimpleDateFormat («MM/dd/yyyy», Locale.US); sdf.setLenient (false); ParsePosition pos = new ParsePosition (0); sdf.parse ("22/12/2012", pos); 'этот код возвращает 10 как в индексе, так и в errorindex – turboDi