2010-04-24 10 views
33

Comment puis-je analyser un pubDate d'un flux RSS à un objet Date dans Java.Parse RSS Objet pubDate to Date dans Java

Le format du flux RSS: Sam, 24 avril 2010 14:01:00 GMT

Ce que j'ai en ce moment:

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

Mais ce code renvoie une ParseException avec le message Date Unparseable

Répondre

63

vous pouvez définir le format de date que vous essayez d'analyser, en utilisant la classe 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"); 

De plus, pour de non-anglais Locale, assurez-vous d'utiliser les éléments suivants lors de l'analyse des dates en anglais:

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH); 
13

Si vous devez avoir une date compatible RFC822, essayez ceci:

DateFormat dateFormatterRssPubDate = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.ENGLISH); 
4

Pour le chanceux qui peut utiliser Java 8 LocalDateTime:

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

C'est non seulement plus facile, il est d'abord et avant tout moins sujettes aux erreurs. Merci. PS 'LocalDateTime' et' DateTimeFormatter' ont été rétroportés à Java 6 et 7 dans [ThreeTen Backport] (http://www.threeten.org/threetenbp/). –