【问题标题】:Parse RSS pubDate to Date object in java在java中将RSS pubDate解析为日期对象
【发布时间】: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 消息

【问题讨论】:

    标签: java date rss date-format


    【解决方案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"));
        

        【讨论】:

        • 这不仅更容易,而且首先更不容易出错。谢谢。 PS LocalDateTimeDateTimeFormatter 已在 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
        猜你喜欢
        • 1970-01-01
        • 2011-06-04
        • 2018-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多