Разбор RSS pubDate to Date объекта в Java - PullRequest
37 голосов
/ 24 апреля 2010

Как я могу разобрать pubDate из RSS-канала в объект Date в java.

Формат в ленте RSS: Суббота, 24 апреля 2010 14:01:00 GMT

Что у меня есть на данный момент:

DateFormat dateFormat = DateFormat.getInstance();
Date pubDate = dateFormat.parse(item.getPubDate().getText());

Но этот код генерирует исключение ParseException с сообщением «Неразборчивая дата»

Ответы [ 3 ]

65 голосов
/ 24 апреля 2010

Вы можете определить формат даты, которую вы пытаетесь проанализировать, используя класс SimpleDateFormat:

DateFormat formatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz");
Date date = formatter.parse("Sat, 24 Apr 2010 14:01:00 GMT");

Кроме того, для неанглийских Locale, обязательно используйте следующее при разборе дат на английском языке:

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH);
13 голосов
/ 28 октября 2011

Если вам нужна дата, соответствующая RFC822, попробуйте следующее:

DateFormat dateFormatterRssPubDate = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
6 голосов
/ 09 августа 2016

Для счастливчиков, которые могут использовать Java 8 LocalDateTime:

LocalDateTime localDateTime = LocalDateTime.from(DateTimeFormatter.RFC_1123_DATE_TIME.parse("Sat, 24 Apr 2010 14:01:00 GMT"));
...