Непарсируемая дата Исключение - PullRequest
4 голосов
/ 02 октября 2011

Ну, я пытаюсь поймать дату из rss, и я получаю это исключение в logcat:

E/AndroidNews(  870): Caused by: java.text.ParseException: Unparseable date: "Su
n, 02 Oct 2011 14:00:00 +0100"
E/AndroidNews(  870):   at java.text.DateFormat.parse(DateFormat.java:626)
E/AndroidNews(  870):   at com.warriorpoint.androidxmlsimple.Message.setDate(Mes
sage.java:57)

Мой форматер is

статический SimpleDateFormat FORMATTER = новый SimpleDateFormat ("гггг-мм-дд чч: мм"); ´

Мой метод setDate ();

public void setDate(String date) {
    this.date=null;

    // pad the date if necessary
    while (!date.endsWith("00")){
        date += "0";
    }
    try {
        this.date = FORMATTER.parse(date.trim());
    } catch (ParseException e) {
        throw new RuntimeException(e);
    }
}

1 Ответ

9 голосов
/ 02 октября 2011

Вы используете неправильный формат, для "Sun, 02 Oct 2011 14:00:00 +0100" попробуйте это вместо:

new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US)

Это также заставляет языковой стандарт (американский) английский, так что названия дня и месяца не зависят от языкового стандарта устройства, например ожидая "Dom" для "Sun" и "Oct" для "Out" в португальском языке (я заглянул в ваш профиль).

Формат, который вы задали в своем вопросе, сможет анализировать только даты, например "2011-10-02 14:00".

Кроме того, не добавляйте дату, пусть ваш анализатор выполняет синтаксический анализ.


Если вы хотите вывести / отобразить java.util.Date определенным образом, просто создайте новый SimpleDateFormat (назовем его displayFmt) с желаемой строкой форматирования и вызовите format():

String formattedDate = new SimpleDateFormat("dd MM yyyy H").format(date);

Это даст вам что-то вроде «02 10 2011 17» на сегодняшний день, отформатированный в предпочтительной локали пользователя / устройства.

Обратите внимание, что в своем комментарии вы сказали dd mm yyyy h (строчные буквы m и h), что дало бы вам "dayOfMonth минут год часов12" - я думаю, что это не то, что вы хочу, поэтому я изменил его на верхний регистр M и верхний регистр H, чтобы дать вам "dayOfMonth month year hours24 ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...