1

我有一个 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 期间)的英国和西欧,是时间的数字部分反映本地时间,而区域时间的部分则硬编码格林威治标准时间。"

我生成日期:

<pubDate>$data2 GMT</pubDate>

其中 $data2 取自数据库,如下所示:

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

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

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

4

3 回答 3

1

添加您的时区而不是 GMT:

<pubDate>$data2 +0200</pubDate>

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

$data2 .= date(' O');
于 2012-04-20T08:04:54.997 回答
1

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

$data2 = gmdate(DATE_RSS, time());
于 2012-04-27T08:35:26.097 回答
0

试试这个:

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

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

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

于 2012-04-20T07:40:21.977 回答