开发Android应用程序并需要从RSS解析pubDate标记。从这个标签显示实际时间没有问题,但它太长了
<pubDate>Wed, 15 Nov 2017 14:46:40 +0000</pubDate>
我真正感兴趣的是如何约会,在这种情况下15 Nov
被提取。此外,我想根据pubDate标记按降序比较日期和显示帖子。
答案 0 :(得分:0)
如果您使用罗马来阅读RSS,您可以像下面一样格式化pubDate。 https://rometools.github.io/rome/
getPubDate()返回Date类型。您可以按流操作进行排序或比较。
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());
}
}
答案 1 :(得分:0)
Java类库可以解析RSS日期/时间值。
RSS日期/时间值位于RFC 822 format。您可以使用[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
包中的DateFormat
和SimpleDateFormat
类来解析其中一个日期。
首先,为RFC 822创建一个日期格式化程序,并使用它来解析java.text
元素中的字符串:
pubdate
对DateFormat formatter = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
Date pubdate = formatter.parse("Wed, 15 Nov 2017 14:46:40 +0000");
的调用会从parse()
包中引发ParseException
,因此您必须使用java.text
/ try
或{{}} {{}}方法中的1}}子句。
接下来,创建一个日历并将其设置为该日期:
catch
最后,从该日历中获取月份和月份。
throws