Почему этот код генерирует ошибку: «непарсируемая дата» - PullRequest
2 голосов
/ 12 января 2011

Я пытаюсь использовать класс SimpleDateFormat для анализа DateTime из этой строки:

Mon Jan 10 2011 01:15:00 GMT+0000 (GMT Standard Time)

Я попробовал следующую строку формата:

String example = "Mon Jan 10 2011 01:15:00 GMT+0000 (GMT Standard Time)";
SimpleDateFormat formatter = new SimpleDateFormat("E M d y H:m:s z");
try
{
    Date exampleDate = formatter.parse(example);
    LOGGER.warn(exampleDate.toString());
}
catch(Exception e)
{
    LOGGER.warn(e.getMessage(), e);
}

Но он генерируетошибка:

Unparseable date: "Mon Jan 10 2011 01:15:00 GMT+0000 (GMT Standard Time)"

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

String example = "Sun Jan 09 2011 22:00:00 GMT+0000";

Но выдает ту же ошибку.

WARNING: Unparseable date: "Sun Jan 09 2011 22:00:00 GMT+0000"
java.text.ParseException: Unparseable date: "Sun Jan 09 2011 22:00:00 GMT+0000"

Любойнамеки как это обойти?

Ответы [ 4 ]

2 голосов
/ 18 сентября 2012

Вы должны использовать (или Z только для последней части):

E MMM dd yyyy HH:mm:ss zZ 
2 голосов
/ 12 января 2011

Согласно http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html формат должен быть:

"E M d y H:m:s zZ"

Сюда входит общий часовой пояс и часовой пояс RFC 822.

Или вы можете изменить свой вводдата до:

Mon Jan 10 2011 01:15:00 GMT+00:00

, которая будет содержать всего z.

(Обратите внимание на двоеточие в последней части.)

1 голос
/ 12 января 2011

Вам также нужно использовать «МММ», если вы хотите анализировать текстовые месяцы. Из javadocs:

"Месяц: если количество букв шаблона составляет 3 или более, месяц интерпретируется как текст, в противном случае он интерпретируется как число."

0 голосов
/ 12 января 2011

I думаю , что проблема в том, что модификатор z не может проанализировать GMT+0000. Согласно Javadoc, описывающему то, что z анализирует , формат выглядит как GMT + HH: MM, а не GMT ​​+ HHMM Если вы хотите проанализировать то, что у вас есть, вы, вероятно, хотите изменить строку формата с

E M d y H:m:s z

до

E M d y H:m:s 'G'M'Tz
...