我有一个从我设计的自定义博客生成的RSS源;但是,我的一个帖子每天都会出现在我的RSS阅读器上。我终于检查了日期并看到它每天出现,但从2000年开始.Google阅读器显示日期,就像每天更新帖子但查看XML代码,即显示2000.所有其他帖子都是显示为1969年。
以下是我设置php代码的方法:
$rssfeed.='<pubDate>'.date("D, d M Y H:i:s O",strtotime($date)).'</pubDate>';
这是正确的方法吗?
编辑:我可能是个白痴 - 我不会在我的代码中显示$ date作为变量 - 出于好奇,应该在那里做什么?答案 0 :(得分:2)
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
答案 1 :(得分:0)
我想出了问题,这里是完整的代码:
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
中。我删除了,一切都很好!