从2016年4月18日10:41 AM到2016年4月18日10:41在android中解析日期格式

时间:2016-04-18 04:49:59

标签: android date parsing datetime

我正在尝试将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。我应该如何解析它? 提前谢谢。

3 个答案:

答案 0 :(得分:3)

尝试以下代码

    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);

答案 1 :(得分:1)

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

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

应该是

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

答案 2 :(得分:0)

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

在您的示例中,您使用小写m解析月份,这会导致错误。正如@Mike M.所建议的那样,用大写字母改变你的m