2016-09-07 2 views
2

Я пытаюсь с двумя наборами даты с форматом даты:SimpleDateFormat бросает исключение синтаксического анализа для +0100

DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss"); 

Он прекрасно работает Дата: Fri, 26 Aug 2016 13:55:34 +0000

Не для даты: Вт, 06 сен 2016 11:57:14 +0100

Исключение составляет +0100.

Unparseable date: "Tue, 06 Sep 2016 11:57:14 +0100" (at offset 0) 
at java.text.DateFormat.parse(DateFormat.java:555) 
+0

SimpleDateFormat формат 1 = новый SimpleDateFormat («EEE, дд МММ гггг чч: мм: сс г», Locale.ENGLISH); По-прежнему бросать ту же ошибку –

ответ

4

Он проваливает offset 0, что означает, что проблема не связана с часового пояса но на день в письмах.

Вы должны установить Locale вашего SimpleDateFormat.

DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.ENGLISH); 
    Date d1 = format.parse("Fri, 26 Aug 2016 13:55:34 +0000"); 
    Date d2 = format.parse("Tue, 06 Sep 2016 11:57:14 +0100"); 

Работы без проблем.

Если вы также должны получить часовой пояс, вы также должны добавить z к вашей схеме:

DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH); 
+1

Приобретено, как я украл ваш язык и хочу очистить свою совесть. – Bathsheba

+0

SimpleDateFormat format1 = новый SimpleDateFormat («EEE, dd MMM yyyy HH: mm: ss z», Locale.ENGLISH); Все еще не работает. –

+0

Код в моем ответе сработал для меня! – YMomb

3

Вам нужно

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z"); 

Обратите внимание на z для часового пояса.

Анализатор игнорирует регистр нуля (+0000), если z не подается, но не ненулевая (+0100) случае. Элемент lenient контролирует это поведение (Подтверждение @ Марко Топольник).

Поскольку вы используете имена английской недели, вы должны использовать конструктор с двумя аргументами в SimpleDateFormat, передавая Locale.ENGLISH в качестве второго параметра.

+0

Тем не менее он бросает ту же ошибку. Я пытаюсь это сделать в android –

+0

SimpleDateFormat format1 = новый SimpleDateFormat («EEE, dd MMM yyyy HH: mm: ss z», Locale.ENGLISH); По-прежнему не повезло –

Смежные вопросы