Ошибка формата даты с «2011-07-27T06: 41: 11 + 00: 00» - PullRequest
1 голос
/ 27 июля 2011

Я пытаюсь отформатировать строку времени / даты:

String date = "2011-07-27T06:41:11+00:00";
DateFormat formatter = new SimpleDateFormat("yyyy MM-dd'T'HH:mm:ssz"); //2011-07-27T06:41:11+00:00
Date Sdate = formatter.parse(date.toString());

Это вызывает ошибку

unable to parse newDate.

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

Ответы [ 3 ]

4 голосов
/ 27 июля 2011

Проблема связана с информацией о часовом поясе.':' Является недопустимым символом в строке часового пояса.См. http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#rfc822timezone и http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html#timezone

Следующая строка разбирается

String date = "2011-07-27T06:41:11+0000";

Удалите «:» и ваш код будет работать.

1 голос
/ 27 июля 2011

SimpleDateFormat не поддерживает все форматы даты и времени ISO8601.

Вы можете использовать DatatypeConverter.parseDateTime в JAXB.

что-то вроде

String date = "2011-07-27T06:41:11+00:00";
Date Sdate = DatatypeConverter.parseDateTime(date).getTime();

и, пожалуйста, попробуйте следовать соглашениям (имена переменных должны начинаться со строчной буквы)

0 голосов
/ 27 июля 2011

Попробуйте JodaTime. Встроенная в Java обработка дат не так хороша.

...