Java无法使用SimpleDateFormat解析UTC日期

Mik*_*ynn 3 java datetime spring-mvc jodatime

为什么我下面出现错误?它仅在某些日期发生。

 Helper.getDate("2014-01-09T17:10:14Z", "dd-MM-yyyy");

public static Date getDate(String date, String format) {
    DateFormat df = new SimpleDateFormat(format);

    try {
        return df.parse(date);
    } catch (ParseException e) {
        log.error("getDate", e);
    }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

Aff*_*ffe 5

这个日期:

"2014-01-09T17:10:14Z"

格式为 "yyyy-MM-dd'T'HH:mm:ss'Z'"

(或在Java 7中"yyyy-MM-dd'T'HH:mm:ssX"

因此,当然不可能用格式解析它dd-MM-yyyy

格式化字符串必须与输入兼容!

(请注意,我给了文字Z,这是向后兼容的。Java7实际上理解ISO8601,您可以在那里使用X来对其进行实际解析。)