日期格式解析在android从四月182016上午10:41至04/18/2016 10:41



我正在尝试将April 18 2016 10:41 AM解析为04/18/2016 10:41。这是我的代码

private String dateFormat(String strCurrentDate) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("mmmm dd yyyy hh:mm Z");
        Date newDate = null;
        newDate = format.parse(strCurrentDate);
        format = new SimpleDateFormat("MM/dd/yyyy hh:mm");
        String date = format.format(newDate);
        Log.d("DATE_FORMATE_TESTING", date);
        return date;
    }

但它给出了以下错误

04-18 10:41:43.834 7526-7526/gps.clock.com W/System.err: java.text.ParseException: Unparseable date: "April 18 2016 01:41 PM" (at offset 0)
04-18 10:41:43.834 7526-7526/gps.clock.com W/System.err:     at java.text.DateFormat.parse(DateFormat.java:579)
04-18 10:41:43.834 7526-7526/gps.clock.com W/System.err:     at gps.clock.com.MainActivity.dateFormat(MainActivity.java:441)
04-18 10:41:43.834 7526-7526/gps.clock.com W/System.err:     at gps.clock.com.MainActivity.access$500(MainActivity.java:70)
04-18 10:41:43.834 7526-7526/gps.clock.com W/System.err:     at gps.clock.com.MainActivity$1$4.onClick(MainActivity.java:303)

有人能告诉我该怎么修吗?为什么显示Unparseable date。我应该如何解析它?提前谢谢。

尝试以下代码

    String strCurrentDate = "April 18 2016 10:41 AM";
    SimpleDateFormat format = new SimpleDateFormat("MMM dd yyyy hh:mm a");
    Date newDate = null;
    try {
        newDate = format.parse(strCurrentDate);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    format = new SimpleDateFormat("MM/dd/yyyy hh:mm");
    String date = format.format(newDate);
    System.out.print(date);

我认为您需要调整原始格式字符串。

SimpleDateFormat format = new SimpleDateFormat("mmmm dd yyyy hh:mm Z");

应该是

SimpleDateFormat format = new SimpleDateFormat("MMMM dd yyyy hh:mm a");

在java中,日期格式mM都有不同的含义。m用于解析分钟,而M用于解析月份

在您的示例中,您使用小写m解析月份,这会导致错误。根据@Mike M.的建议,将您的m改为大写。