【问题标题】:Implausible date in RSS how to fix it in PHP?RSS 中令人难以置信的日期如何在 PHP 中修复?
【发布时间】:2023-03-14 12:35:01
【问题描述】:

我有一个 RSS:

<pubDate>Fri, 20 Apr 2012 08:00:00 GMT</pubDate>

验证器说这是不正确的,因为:

http://validator.w3.org/feed/docs/warning/ImplausibleDate.html

“虽然此日期时间值的格式正确,但它要么似乎是在未来,要么是过去的足够长的时间,表明可能存在软件错误或错误设置的时钟。

虽然 RSS 2.0 规范预计某些聚合器将来可能会选择忽略带有 pubDates 的项目,但这种做法似乎从未流行起来。

相反,许多客户端按日期排序,默认情况下或作为选项。因此,日期值尽可能准确非常重要。

一个常见错误,尤其是在夏季时间(即 BST 和 WEST 期间)的英国和西欧,是时间的数字部分反映当地时间,而时间的区域部分硬编码 GMT。 "

我生成日期:

<pubDate>$data2 GMT</pubDate>

其中 $data2 是从数据库中获取的,如下所示:

DATE_FORMAT(DATE,'%a, %d %b %Y %T')

并且 DATE 由 mysql 函数 NOW() 接收。

这很奇怪,因为我们这里是 9:24 点,但我们最近在波兰发生了时间变化。那么我该如何解决呢?

【问题讨论】:

    标签: php rss


    【解决方案1】:

    添加您的时区而不是 GMT:

    <pubDate>$data2 +0200</pubDate>
    

    应该这样做。请注意,您的时区可能会在一年中发生变化,因此您可能希望动态地 generate 它:

    $data2 .= date(' O');
    

    【讨论】:

    • 我在 5.7 中运行 WordPress,发现此解决方案是通过根据找到的文档 Inline Link 设置 $date = get_lastpostmodified( 'blog' ); 来实现的
    【解决方案2】:

    格式没问题。 RSS 2.0 的标准时间格式必须为 GMT,请将时间格式化为 GMT,注意不会比当前时间快。

    $data2 = gmdate(DATE_RSS, time());
    

    【讨论】:

      【解决方案3】:

      试试这个:

      <pubDate><?php echo date(DATE_RFC822); ?></pubDate>
      

      http://feed2.w3.org/docs/error/InvalidRFC2822Date.html

      编辑:从数据库中获取日期作为 unix 时间戳,并将其作为第二个参数传递给 date() 函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-05
        • 1970-01-01
        • 1970-01-01
        • 2021-11-15
        • 2016-12-10
        • 2013-10-10
        • 1970-01-01
        相关资源
        最近更新 更多