2017-12-24 10 views
1

Android-App entwickeln und pubDate-Tag aus RSS analysieren. Es gibt kein Problem von diesem Tag aktuelle Zeit angezeigt werden, aber es ist zu langDatum aus pubDate RSS-Tag extrahieren

<pubDate>Wed, 15 Nov 2017 14:46:40 +0000</pubDate>

Was ich wirklich hier interessiert ist, wie heute kann, in diesem Fall 15 Nov extrahiert werden. Außerdem möchte ich Daten vergleichen und Beiträge in absteigender Reihenfolge basierend auf pubDate anzeigen.

Antwort

0

Wenn Sie Rom zum Lesen von RSS verwenden, können Sie pubDate wie folgt formatieren. https://rometools.github.io/rome/

getPubDate() gibt Datum zurück. Sie können nach Stream-Operationen sortieren oder vergleichen.

import com.rometools.rome.feed.synd.SyndFeed; 
import com.rometools.rome.io.SyndFeedInput; 
import com.rometools.rome.io.XmlReader; 

import java.net.URL; 
import java.text.SimpleDateFormat; 
import java.util.List; 
import java.util.stream.Collectors; 

public class NewsService { 

    public List<String> getNews(String url) throws Exception { 
     // read RSS 
     SyndFeed feed = new SyndFeedInput().build(new XmlReader(new URL(url))); 
     // format pubDate and create pubDate string list 
     SimpleDateFormat sdf = new SimpleDateFormat("dd MMM"); 
     return feed.getEntries().stream().map(i -> i.getPublishedDate()).map(sdf::format).collect(Collectors.toList()); 
    } 
} 
0

Die Java-Klassenbibliothek kann RSS-Datum/Uhrzeit-Werte parsen.

RSS Datum/Uhrzeit Werte sind in RFC 822 format. Sie können eines dieser Daten mit den Klassen DateFormat und SimpleDateFormat im Paket java.text analysieren.

Zuerst ein Datum Formatierer für RFC 822 erstellen und verwenden es die Zeichenfolge im pubdate Element zu analysieren:

DateFormat formatter = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z"); 
Date pubdate = formatter.parse("Wed, 15 Nov 2017 14:46:40 +0000"); 

Der Aufruf von parse() ein ParseException aus dem java.text Paket wirft, so dass Sie sie umgeben müssen mit a try/catch oder verwenden Sie eine throws Klausel in der Methode.

nächste einen Kalender erstellen und zu diesem Zeitpunkt eingestellt:

Calendar cal = Calendar.getInstance(); 
    cal.setTime(pubdate); 

schließlich aus diesem Kalender den Monat und Tag des Monats erhalten.

System.out.println("Month: " + cal.get(Calendar.MONTH)); 
    System.out.println("Day: " + cal.get(Calendar.DAY_OF_MONTH)); 
Verwandte Themen