парсинг даты java с GMT в нем

Опубликованная строка даты возвращается как: Вс, 18 ноября 2012 г., 06:50:02 по Гринвичу, и мой метод convertDate возвращает мне java.text.ParseException: Unparseable date: «Вс, 18 ноября 2012 г., 06:50:02 по Гринвичу» ( по смещению 8). Я проверил ресурсы, но не нашел их очень полезными, как этот... date-using-simpledateformat">Синтаксический анализ строки с часовым поясом по Гринвичу для даты с использованием SimpleDateFormat

Был бы очень признателен, если бы вы могли пролить свет на это. Вот мой метод .. pubDate здесь воскресенье, 18 ноября 2012 г. 06:50:02 GMT

public Date convertDate(String pubDate){

    SimpleDateFormat sdf =  new SimpleDateFormat("EEE, dd MM yyyy hh:mm:ss Z",Locale.US);
    Date newsDate = new GregorianCalendar(0, 0, 0).getTime();
        try{
            newsDate  = sdf.parse(pubDate);
        }catch(ParseException e){
            Log.d(Tag, "Exception Parsing date" + pubDate);
        }
    return null;
}

person Tameem Ahmed    schedule 18.11.2012    source источник


Ответы (2)


Используйте MMM для поля месяца:

new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss Z",Locale.US);

Как только это будет исправлено, не забудьте вернуть newsDate, поскольку сейчас вы возвращаете null.

person Reimeus    schedule 18.11.2012

Вот небольшой тест, который я сделал:

@Test
public void testDate() throws ParseException {

    String pubDate = "Sun, 18 Nov 2012 06:50:02 GMT";

    SimpleDateFormat sdf = new SimpleDateFormat(
            "EEE, dd MMM yyyy hh:mm:ss z", Locale.US);
    Date newsDate = new GregorianCalendar(0, 0, 0).getTime();

    newsDate = sdf.parse(pubDate);

}

Вам нужно установить месяц с помощью MMM, потому что вы используете первые три буквы месяца (и четыре M означают полное название месяца). Кроме того, часовой пояс должен быть z вместо Z, поскольку у вас Часовой пояс ISO 8601 (GMT).

person ElderMael    schedule 18.11.2012