Подтвердить что ты не робот

Java.text.ParseException: неотступная дата "yyyy-MM-dd'T'HH: mm: ss.SSSZ" - SimpleDateFormat

Я был бы признателен за помощь в обнаружении ошибки для этого исключения:

java.text.ParseException: Unparseable date: "2007-09-25T15:40:51.0000000Z"

и следующий код:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date date = sdf.parse(timeValue);
long mills = date.getTime();
this.point.time = String.valueOf(mills);

Он выдает expcetion с помощью Date date = sdf.parse(timeValue);.

timeValue = "2007-09-25T15:40:51.0000000Z";, как и в случае исключения.

Спасибо.

4b9b3361

Ответ 1

Z представляет символ часового пояса. Он должен быть процитирован:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

Ответ 2

В Java 7 вы также можете использовать шаблон X для соответствия часовому поясу ISO8601, который включает специальный Z (UTC) значение:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSX");
Date date = sdf.parse("2007-09-25T15:40:51.0000000Z");

Однако, похоже, для шаблона "Z" требуется точное число миллисекундных символов, что не является обязательным. Я думаю, это связано с тем, что определение ISO8601 также включает в себя "двухзначные часы", которые являются просто цифрами, поэтому не может быть выделен парсером за предыдущие миллисекунды.

Таким образом, эта версия будет полезна для временных меток со второй точностью, а тем более для миллисекунд.