在java中将RSS pubDate解析为日期对象
Posted
技术标签:
【中文标题】在java中将RSS pubDate解析为日期对象【英文标题】:Parse RSS pubDate to Date object in java 【发布时间】:2011-02-11 22:18:23 【问题描述】:如何将 RSS 提要中的 pubDate 解析为 java 中的 Date 对象。
RSS 提要中的格式: 2010 年 4 月 24 日星期六 14:01:00 GMT
我现在拥有的:
DateFormat dateFormat = DateFormat.getInstance();
Date pubDate = dateFormat.parse(item.getPubDate().getText());
但是这段代码会抛出 ParseException 并显示 Unparseable date 消息
【问题讨论】:
【参考方案1】:您可以使用 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);
【讨论】:
【参考方案2】:如果您需要符合 RFC822 的日期,请尝试以下操作:
DateFormat dateFormatterRssPubDate = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
【讨论】:
【参考方案3】:对于可以使用 Java 8 LocalDateTime 的幸运者:
LocalDateTime localDateTime = LocalDateTime.from(DateTimeFormatter.RFC_1123_DATE_TIME.parse("Sat, 24 Apr 2010 14:01:00 GMT"));
【讨论】:
这不仅更容易,而且首先更不容易出错。谢谢。 PSLocalDateTime
和 DateTimeFormatter
已在 ThreeTen Backport 中向后移植到 Java 6 和 7。
例外情况:“2019 年 3 月 12 日星期二 10:05:52 EDT”和文本“2019 年 3 月 6 日星期三 14:05:00 PST”无法在索引 25 处解析。
@DanielDeLeón 这似乎与the documentation 一致:不处理北美地区名称和军事地区名称。 我认为 RSS 遵循 RFC 822 此处,并且 PST 、PDT、MST、MDT、CST、CDT、EST 和 EDT 被允许:link。以上是关于在java中将RSS pubDate解析为日期对象的主要内容,如果未能解决你的问题,请参考以下文章