2015-10-23 2 views
1

Я получаю дату с RSS-канала в нижнем формате Пт окт 23, 11:07:08 IST 2015, который я пытаюсь преобразовать в yyyy-MM-dd HH:mm формат.Как разрешить неподдающуюся ошибке даты

Я попробовал этот способ

public class ConvertDate { 
    public static void main(String args[]) throws ParseException 
    { 
     String passedate = "Fri Oct 23 11:07:08 IST 2015"; 
    String res= convertdate(passedate); 
    System.out.println(res); 
    } 
    public static String convertdate(String recivieddate) throws ParseException { 
     SimpleDateFormat in = new SimpleDateFormat("EEEEE MMMMM yyyy HH:mm:ss.SSSZ"); 
     Date date = in.parse(recivieddate); 
     SimpleDateFormat out = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
     String newdate = out.format(date); 
     return newdate; 
    } 
} 

Но я получаю

Exception in thread "main" java.text.ParseException: Unparseable date: "Fri Oct 23 11:07:08 IST 2015" 
    at java.text.DateFormat.parse(Unknown Source) 
    at ConvertDate.convertdate(ConvertDate.java:20) 
    at ConvertDate.main(ConvertDate.java:12) 

Не могли бы вы, пожалуйста, дайте эм знать, как решить эту

+1

Ну, в вашем формате есть год, где день месяца, а не конец. – RealSkeptic

ответ

1

шаблон дата не совпадает с входным. Попробуйте изменить линию

SimpleDateFormat in = new SimpleDateFormat("EEEEE MMMMM yyyy HH:mm:ss.SSSZ"); 

в

SimpleDateFormat in = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy"); 

Надежда, что помогает

+0

Большое спасибо. ... – Pawan

0

Ваша дата имеет формат EEE MMM dd HH:mm:ss zzz yyyy с английским местным. Это разбирает дата правильно:

new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH) 
     .parse("Fri Oct 23 11:07:08 IST 2015"); 
0

Попробуйте это:

SimpleDateFormat in = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy"); 
    in.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta")); //or Asia/Jerusalem 
    String s2 = "Fri Oct 23 11:07:08 IST 2015"; 
    Date date = in.parse(s2); 

    SimpleDateFormat out = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
    out.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta")); 
    System.out.println(out.format(date)); 

Выход:

2015-10-23 11:07 Кроме того, обратите внимание на setTimeZone. IST может либо стоять на индийском ST, либо в Израиле ST, поэтому было бы лучше, если бы вы указали, какой часовой пояс вам действительно нужен.

here для IST неопределенность.

Смежные вопросы