无法将ISO-8601日期字符串解析为Date

时间:2016-02-13 13:32:01

标签: java android date

我看了类似的主题,但它没有帮助我。我有ISO-8601日期类型,例如:2014-08-13T19:05:22.168083+00:00。 我试着解析它:

public static Date parseISO8601(final String date) {
    String fixedDate = date.replaceFirst("(\\d\\d[\\.,]\\d{3})\\d+", "$1");
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.ENGLISH);

    try {
        return df.parse(fixedDate);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    return null;
}

但它会抛出异常。我不明白为什么?
错误信息:java.text.ParseException: Unparseable date: "2014-08-13T19:05:22.148+00:00"

1 个答案:

答案 0 :(得分:2)

使用X代替Z作为时区,即:

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", ...