Источник String неизвестен при использовании метода parse! - PullRequest
1 голос
/ 29 апреля 2010

для разбора строки на дату sql действует:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");            
    java.util.Date date = null;
    try {
        date =  df.parse(dateimput);
    } catch (ParseException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }

с dateimput - вот что я получаю из своей формы: String dateimput=request.getParameter("datepicker");
но при запуске вижу ошибку:

java.text.ParseException: Format.parseObject(String) failed
at java.text.Format.parseObject(Unknown Source)
at ServletEdition.doPost(ServletEdition.java:70)  

так что это означает, что dateimput не известен + Замечу, что он корректно отображается, когда:

 System.out.println("datepicker:" +dateimput);

Спасибо.

Ответы [ 3 ]

1 голос
/ 29 апреля 2010

Итак, впервые это кажется сложным, но внимательно посмотрите на решение. На самом деле нам нужно 2 Simple Date Formater, потому что в моем случае разбор будет выполняться в 2 этапа:

System.out.println("datepicker:" +dateimput);



    SimpleDateFormat df1 = new SimpleDateFormat("MM/dd/yyyy"); 
    SimpleDateFormat df2=new SimpleDateFormat("yyyy-MM-dd");
    Date dt=null;
    try {
        dt = df1.parse(dateimput);
        System.out.println("dt" +dt);
        System.out.println("dt formatted" +df2.format(dt));

    } catch (ParseException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

теперь работает нормально и нормально

0 голосов
/ 29 апреля 2010

Эта ошибка возникает из-за того, что входная строка для метода parse не соответствует тому, как шаблон сказал, что должен выглядеть:

публичный анализ даты (источник строки) создает исключение ParseException [...] Броски: ParseException - если начало указанной строки не может быть проанализировано.

См. parse документацию.

Похоже, что ввод в dateimput неверен. Поскольку это может всегда происходить с пользовательским вводом (я предполагаю, что значение фактически является пользовательским вводом ...), было бы лучше использовать, скажем, другую версию синтаксического анализа , которая позволяет вам определить во входной строке парсер должен был выполнить команду punt, и в этом случае он не требует от вас перехвата исключения, но сообщает вам о сбое с использованием результата и аргумента ParsePosition.

ParsePosition posn = new ParsePosition();
Date parsed = format.parse(input, posn);

if( parsed == null ) {

    int badPosn = posn.getErrorIndex();
    System.out.println("The input is invalid; the parser stopped at " + badPosn);

} else {

    // Do something with the date...
} 
0 голосов
/ 29 апреля 2010

Ошибка «Неизвестная ошибка» просто означает, что ваш путь к классу не содержит источников JDK, и из-за этого он не знает, где в коде формата произошло исключение (хотя он знает, сообщить, какая строка в ServletEdition проблематична ).

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