Непревзойденная дата: "2013-07-11T13: 41: 22.000Z" (со смещением 23)

Может кто-нибудь сказать мне, почему в мире я получил это исключение?

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)

Ответы

Ответ 1

попробуйте использовать

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

Z в конце обычно является смещением часового пояса. Если вам это не нужно, возможно, вы можете сбросить его с обеих сторон.

Ответ 2

Используйте X вместо Z в конце строки формата:

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

для разбора смещения часового пояса формата ISO-8601.

(Работает только если вы используете Java 7. См. этот вопрос).

Ответ 3

Z в вашей строке времени не является допустимым идентификатором часового пояса, но указанный вами формат времени ожидает идентификатора часового пояса. Более конкретно, он ожидает идентификатор часового пояса RFC 822, который обычно составляет 4 цифры.