java.text.ParseException: Unparseable date

2022-08-31 15:48:02

我在尝试以下代码时遇到解析异常:

    String date="Sat Jun 01 12:53:10 IST 2013";
    SimpleDateFormat sdf=new SimpleDateFormat("MMM d, yyyy HH:mm:ss");
    Date currentdate;
    currentdate=sdf.parse(date);
    System.out.println(currentdate);

例外:

线程“main” java.text.ParseException 中的异常:不可解析的日期:“Sat Jun 01 12:53:10 IST 2013” at com.ibm.icu.text.DateFormat.parse(DateFormat.java:510)

输入:Sat Jun 01 12:53:10 IST 2013

预期输出:Jun 01,2013 12:53:10

如何解决这个问题?


答案 1

您的模式根本不对应于输入字符串...它不起作用也就不足为奇了。这可能效果更好:

SimpleDateFormat sdf = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy",
                                            Locale.ENGLISH);

然后,要使用所需的格式进行打印,您需要第二个SimpleDateFormat:

Date parsedDate = sdf.parse(date);
SimpleDateFormat print = new SimpleDateFormat("MMM d, yyyy HH:mm:ss");
System.out.println(print.format(parsedDate));

笔记:

  • 您应该包括区域设置,就好像您的区域设置不是英语一样,日期名称可能无法识别
  • IST 不明确,可能会导致问题,因此,如果可能,应在输入中使用正确的时区名称。

答案 2
        String date="Sat Jun 01 12:53:10 IST 2013";
        SimpleDateFormat sdf=new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy");
        Date currentdate=sdf.parse(date);
        SimpleDateFormat sdf2=new SimpleDateFormat("MMM dd,yyyy HH:mm:ss");
        System.out.println(sdf2.format(currentdate));

推荐