2010-04-24 5 views
33

Wie kann ich ein PubDate von einem RSS-Feed zu einem Date-Objekt in Java analysieren.Parse RSS pubDate zu Date-Objekt in Java

Das Format, in dem RSS-Feed: Sa, 24. April 2010 14.01.00 GMT

Was ich im Moment habe:

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

Aber dieser Code eine ParseException mit der Meldung wirft unparseable Datum

Antwort

63

Sie können das Datumsformat definieren Sie zu analysieren versuchen, mit Hilfe der Klasse 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"); 

Zusätzlich für nicht-englische Locale ist, sollten Sie die folgenden verwenden, wenn Termine in Englisch Parsen:

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

Falls Sie ein RFC822-konforme Datum haben müssen, versuchen Sie dies:

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

Für die glücklichen, die die Java 8 Local verwenden können:

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

das ist nicht nur einfacher, dann ist es in erster Linie weniger fehleranfällig. Vielen Dank. PS 'LocalDateTime' und' DateTimeFormatter' wurden in [ThreeTen Backport] (http://www.threeten.org/threetenbp/) zurück nach Java 6 und 7 portiert. –