我有一个由我设计的自定义博客生成的RSS提要;然而,我的一篇帖子每天都会出现在我的RSS阅读器上。我终于查了一下日期,发现它每天都会出现,但从2000年开始。GoogleReader显示的日期是帖子每天更新的时间,但查看XML代码,它显示的是2000。所有其他员额均显示为1969年。
以下是我如何设置php代码:
$rssfeed.='<pubDate>'.date("D, d M Y H:i:s O",strtotime($date)).'</pubDate>';
这是正确的方法吗?
编辑:我可能是个白痴——我没有在代码中显示$date作为变量——出于好奇,应该有什么?
pubDate频道中内容的发布日期。例如,《纽约时报》每天出版,出版日期每24小时翻一次。此时频道的pubDate发生更改。RSS中的所有日期时间都符合RFC 822的日期和时间规范,但年份可以用两个字符或四个字符表示(首选四个)2002年9月7日星期六00:00:01 GMT
请参阅:http://cyber.law.harvard.edu/rss/rss.html
$fromStringDate = strtotime($date);
if (!$fromStringDate) throw new Exception(sprintf('Date-Failure in "%s"', $date));
$rfc822Date = date("r", $fromStringDate);
$rssfeed .= sprintf('<pubDate>%s</pubDate>', $rfc822Date);
另请参阅:http://php.net/date
我发现了问题,下面是完整的代码:
while ($row = mysql_fetch_array($result)) {
extract($row);
$rssfeed.='<item>';
$rssfeed.='<title>'.$title.'</title>';
$rssfeed.='<description>'.validate($news).'</description>';
$rssfeed.='<pubDate>'.date('r',$date).'</pubDate>';
$rssfeed.='</item>';
}
在倒数第二行写$date
的地方,出于某种原因,我把它包在了strtotime
中。我把它拿走了,一切都很好!