【问题标题】:RFC-822 date-time format in RSS 2.0 feeds: CET not accepted?RSS 2.0 提要中的 RFC-822 日期时间格式:不接受 CET?
【发布时间】:2013-03-06 12:46:14
【问题描述】:

[更新了工作解决方案] 我有一个 RSS 提要可以在 RSS 客户端中正确显示,但在通过 http://feedvalidator.org 验证时出现此错误:

pubDate must be an RFC-822 date-time

我的日期格式如下:

Wed, 27 Feb 2013 17:18:15 CET

知道有什么问题吗? 会不会是时区?

解决方案

感谢 Calum,我现在获得了有效的 RSS 提要。原因是 CETpubDate 中不受支持。

以下 Java 代码现在可以正常工作:

String pubDate = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z").format(new Date());

【问题讨论】:

    标签: java date formatting rss atom-feed


    【解决方案1】:

    The RFC 表示它只支持非常有限的一组符号时区名称;只有 UTC 和美国的:

     zone        =  "UT"  / "GMT"                ; Universal Time
                                                 ; North American : UT
                 /  "EST" / "EDT"                ;  Eastern:  - 5/ - 4
                 /  "CST" / "CDT"                ;  Central:  - 6/ - 5
                 /  "MST" / "MDT"                ;  Mountain: - 7/ - 6
                 /  "PST" / "PDT"                ;  Pacific:  - 8/ - 7
                 /  1ALPHA                       ; Military: Z = UT;
                                                 ;  A:-1; (J not used)
                                                 ;  M:-12; N:+1; Y:+12
                 / ( ("+" / "-") 4DIGIT )        ; Local differential
                                                 ;  hours+min. (HHMM)
    

    您可能需要指定为 UTC 的偏移量。

    由于您说您使用的是 Java,如果您使用 Z 将区域格式化为您的时间格式(而不是 z),看起来 SimpleDateFormat 会给您一个符合 RFC-822 的日期。

    【讨论】:

    • 感谢@Calum,解决了问题!
    【解决方案2】:

    你必须使用Z来格式化Calum所说的时区,但不要忘记也指定Locale,否则如果计算机不是英文的,它将无法工作。. .

    这是我的工作代码:

    new SimpleDateFormat("E, d MMM yyyy HH:mm:ss Z", Locale.US).format(new Date());
    

    【讨论】:

      猜你喜欢
      • 2011-04-22
      • 2013-06-13
      • 2013-06-15
      • 1970-01-01
      • 2010-09-22
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多