java.text.ParseException:无法解析的日期:

时间:2016-02-15 21:42:40

标签: android

这些代码在一些设备中崩溃。

 SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy hh:mm a", Locale.ENGLISH);
        format.setTimeZone(TimeZone.getTimeZone("GMT"));
        Date date = null;
        try {
            date = format.parse(dtStart);
            System.out.println("Date ->" + date);
        } catch (Exception e) {
            e.printStackTrace();
        }
        long ere = date.getTime() / 1000;

错误:

System.err: java.text.ParseException: Unparseable date: "15-02-2016 08:56 p.m." (at offset 17)
System.err:     at java.text.DateFormat.parse(DateFormat.java:579)

3 个答案:

答案 0 :(得分:2)

您可以针对您的问题使用此解决方法。

但实际上Shlublu是正确的。

private static void parseTime(String dtStart) {
    String time = dtStart.substring(0, dtStart.length() - 4);
    System.out.println(time);
    String timePick = dtStart.substring(dtStart.length() - 4, dtStart.length());
    System.out.println(timePick);
    if (timePick.equals("p.m.")) {
        time += "PM";
    } else if (timePick.equals("a.m.")) {
        time += "AM";
    }
    SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy hh:mm a", Locale.ENGLISH);
    format.setTimeZone(TimeZone.getTimeZone("GMT"));
    Date date = null;
    try {
        date = format.parse(time);
        System.out.println("Date ->" + date);
    } catch (Exception e) {
        e.printStackTrace();
    }
    long ere = date.getTime() / 1000;
}

答案 1 :(得分:1)

问题来自模式的a部分。 它应该是“PM”,而不是“p.m.”,according to the SimpleDateFormat documentation

a   am/pm marker    (Text)  PM

这与您收到的错误消息一致:

  

java.text.ParseException:Unparseable date:“15-02-2016 08:56 p.m.” (在偏移17处)

偏移17(从零开始)对应于“p.m。”的“p”。

答案 2 :(得分:0)

日期“p.m.”的部分内容在英语区域设置的SimpleDateFormat中不被识别为AM / PM说明符。它应该是AM或PM。