如何将日期格式响应传递给 SimpleDateFormat?

How to pass date format Response to SimpleDateFormat?

我正在收到 11:10 AM Thursday - March, 02 2017 之类的日期 Formate 响应。

我试过这样

 String time = 11:10 AM  Thursday - March, 02 2017
   try {


 Date cDate = new SimpleDateFormat("hh:mm aa EEE - MMM, dd yyyy", Locale.ENGLISH).parse(time);
                    System.out.println(cDate);

                    Calendar cal = Calendar.getInstance();
                    cal.setTime(cDate);
                    cal.setTimeZone(TimeZone.getTimeZone("UTC"));

                    String monthName = new SimpleDateFormat("MMMM", Locale.ENGLISH).format(cal.getTime());
                    String day = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(cal.getTime());
                    int year = Calendar.getInstance().get(Calendar.YEAR);
                    String date = new SimpleDateFormat("dd", Locale.ENGLISH).format(cal.getTime());
                    String hour = new SimpleDateFormat("hh", Locale.ENGLISH).format(cal.getTime());
                    String min = new SimpleDateFormat("mm", Locale.ENGLISH).format(cal.getTime());
                    String am_pm = new SimpleDateFormat("a", Locale.ENGLISH).format(cal.getTime());

                }catch (Exception e){
                    e.printStackTrace();
                }

但它例外地说:

Unparseable date: "11:10 AM Thursday - March, 02 2017" (at offset 9)

那么像这样的字符串如何传递日期格式呢?

使用 EEEE 作为全名,例如 Thursday

Date cDate = new SimpleDateFormat("hh:mm aa EEEE - MMM, dd yyyy", Locale.ENGLISH).parse(time);

好吧,你只是错过了一件小事。

您正在使用:

Date cDate = new SimpleDateFormat("hh:mm aa EEE - MMM, dd yyyy", Locale.ENGLISH).parse(time);

相反,你需要这样使用

Date cDate = new SimpleDateFormat("hh:mm aa  EEE - MMM, dd yyyy", Locale.ENGLISH).parse(time);

你错过了星期四的额外 space