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;
}
Вход в метод: 2014-06-04
Ожидаемый результат: 06-июн-2014
Я следовал за некоторыми Ref. от Stackru.com, но все же у него проблема сохраняется. Пожалуйста помоги.
4 ответа
Решение
У вас нет временной части в вашей строке: а в месяце только два символа заменяются
new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss",Locale.ENGLISH);
с
new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH);
// Try this way,hope this will help you to solve your problem....
public String convertDateStringFormat(String strDate, String fromFormat, String toFormat){
try{
SimpleDateFormat sdf = new SimpleDateFormat(fromFormat);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
SimpleDateFormat dateFormat2 = new SimpleDateFormat(toFormat.trim());
return dateFormat2.format(sdf.parse(strDate));
}catch (Exception e) {
e.printStackTrace();
return "";
}
}
Возможно, вам нужно работать с различными форматами ввода. Затем перехватите исключение неуправляемого формата (только пример):
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;
}
В моем случае я использовал::
SimpleDateFormat todaySdf = new SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH);
изменил это на
SimpleDateFormat todaySdf = new SimpleDateFormat("dd MM yyyy", Locale.ENGLISH);
и это сработало.. лишний М был виновником!!