无法解释的日期:“2013-07-11T13:41:22.000Z”(偏移23处)

时间:2013-08-28 08:50:10

标签: java

有人能告诉我为什么世界上我有这个例外吗?

  

08-28 08:47:05.246:D / DateParser(4238):收到的用于解析的字符串是   2013-08-05T12:13:49.000Z

private final static String DATE_FORMAT_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";


public static Date parseDate(String stringToParse) {
        Date date = null;
        try {
            date = new SimpleDateFormat(DATE_FORMAT_PATTERN).parse(stringToParse);
        } catch (ParseException e) {
            Logger.logError(TAG, e);
        }
        return null;
    }

08-28 08:47:05.246: E/DateParser(4238): Exception: java.text.ParseException: Unparseable date: "2013-08-05T12:13:49.000Z" (at offset 23)

4 个答案:

答案 0 :(得分:56)

尝试使用

String DATE_FORMAT_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"

末尾的Z通常是时区偏移量。如果你不需要它,也许你可以将它放在两边。

答案 1 :(得分:11)

在格式字符串末尾使用X代替Z

yyyy-MM-dd'T'HH:mm:ss.SSSX

解析ISO-8601格式的时区偏移。

(仅在使用Java 7时有效。请参阅this question)。

答案 2 :(得分:2)

时间字符串中的Z不是有效的时区标识符,但您指定的时间格式需要时区标识符。更具体地说,它需要一个RFC 822 timezone标识符,通常为4位数。

答案 3 :(得分:0)

在Java-8中,您可以直接使用ISO_INSTANT中的ZonedDateTimeInstant

ZonedDateTime.parse("2013-08-05T12:13:49.000Z")

Instant.parse("2013-08-05T12:13:49.000Z")