java.text.ParseException: неразборная дата: 2014-06-04 (по смещению 5)

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

Exception: java.text.ParseException: Unparseable date: "2014-06-04" (at offset 5)

Ниже приведен мой код:

private String getconvertdate(String date) {
    DateFormat inputFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss",Locale.ENGLISH);
    inputFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
    DateFormat outputFormat = new SimpleDateFormat("dd-MMM-yyyy",Locale.ENGLISH);
    Date parsed = null;
    try {
        parsed = inputFormat.parse(date);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    String outputText = outputFormat.format(parsed);
    return outputText;
}

Входные данные для метода: 04.06.2014

Ожидаемый результат: 6 июня 2014 г.

Я следил за некоторыми ссылками. со Stackoverflow.com, но проблема остается. Пожалуйста помоги.


person Anchit Mittal    schedule 04.06.2014    source источник


Ответы (4)


У вас нет временной части в вашей строке: и месяц имеет только два символа замены

new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss",Locale.ENGLISH);

с

new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH);
person Jens    schedule 04.06.2014

Возможно, вам нужно заняться разными входными форматами. Затем перехватите текущее исключение неуправляемого формата (просто образец):

private String getconvertdate(String date) {
    System.out.println(date.length());
    DateFormat inputFormat = null;
            if(date.length() == 20)
                inputFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss",Locale.ENGLISH);
    if(date.length() == 10)
        inputFormat = new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH) ;

    if(null == inputFormat)
        return "Format invalid";

    inputFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
    DateFormat outputFormat = new SimpleDateFormat("dd-MMM-yyyy",Locale.ENGLISH);
    Date parsed = null;
    try {
        parsed = inputFormat.parse(date);
    } catch (ParseException e) {
        return "Input Date invalid";
    }
    String outputText = outputFormat.format(parsed);
    return outputText;
}
person Abs    schedule 04.06.2014

В моем случае я использовал ::

SimpleDateFormat todaySdf = new SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH);

изменил его на

SimpleDateFormat todaySdf = new SimpleDateFormat("dd MM yyyy", Locale.ENGLISH);

и это сработало. Виновником был лишний М !!

person AndroidGuy    schedule 29.11.2016

person    schedule
comment
но в течение месяца он всегда дает мне «Ян» для МММ - person Harin Kaklotar; 14.03.2016
comment
Не могли бы вы сообщить мне значение fromFormate и toFormate, которое вы передаете этой функции? - person Haresh Chhelana; 14.03.2016
comment
fromFormate = dd-mm-yyyy hh:mm a toFormate = MMM - person Harin Kaklotar; 14.03.2016