如何解决Unparseable日期错误

时间:2015-10-23 12:06:38

标签: java

我将通过以下格式从RSS Feed收到日期 10月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)

请你们知道如何解决这个问题

4 个答案:

答案 0 :(得分:1)

日期模式与输入不匹配。尝试更改行

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

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

希望有所帮助

答案 1 :(得分:0)

您的日期格式为EEE MMM dd HH:mm:ss zzz yyyy,英文为local。 这会正确解析日期:

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

答案 2 :(得分: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歧义。

答案 3 :(得分:0)

首先检查您的实际工作日期。.就我而言

String day =“ date:10/01/2018”;(硒需要从网页上获取它,因此我从页面上获取了上述字符串)

SimpleDateFormat  df=new SimpleDateFormat("MM/dd/yyyy");
        Date ndate = df.parse(day);
        Calendar cal = Calendar.getInstance();
         cal.setTime(ndate);
         cal.add(Calendar.DATE, 1);
         Date DDueDate1= cal.getTime();
         day =df.format(DDueDate1); 

在进行此操作时,出现无法解析的错误。...

因此,日期字符串包含一些字符。因此,只需使用 day.split(“:”); 字符串day1 = day [1];从字符串中删除这些字符。 只需在parse()中将此day1字符串给现在更新的代码如下所示。

SimpleDateFormat  df=new SimpleDateFormat("MM/dd/yyyy");
        Date ndate = df.parse(day1);
        Calendar cal = Calendar.getInstance();
         cal.setTime(ndate);
         cal.add(Calendar.DATE, 1);
         Date DDueDate1= cal.getTime();
         day =df.format(DDueDate1);