2012-02-23 63 views
9

我正在使用RSS Graffitty将RSS项目发布到Facebook页面。如何正确地将日期放在<pubdate>元素上RSS提要

该应用程序告诉我项目丢失的出版日期,所以我说这个标签:

echo "<pubdate>".$row['Date']."</pubdate>"; 

$行[“日期”]从我的MySQL数据库获得,这是一个datetime列。

我该如何格式化它/回显它才能被RSS提要识别?我必须改变这个元素吗?

感谢

+0

小心你使用'pubDate'而不是'pubdate' – random 2012-02-25 03:46:10

回答

13

RSS 2.0规格<pubDate>元素应符合RFC 822 Date and Time syntax。也就是说,在下面的格式显示出来:

周五,2012年12月21日10:00:01 GMT

如果错误通过W3C Feed Validator你会注意到这些例子中运行你的RSS源有效RFC822日期时间:

<pubDate>Wed, 02 Oct 2002 08:00:00 EST</pubDate> 

<pubDate>Wed, 02 Oct 2002 13:00:00 GMT</pubDate> 

<pubDate>Wed, 02 Oct 2002 15:00:00 +0200</pubDate> 

如果你想使用MySQL的格式,你会打电话与以下use of date_format()列,根据需要调整UTC改性剂/标记:

date_format(Date, '%a, %d %b %Y %H:%i:%s') 

或者你可以用DATE_RSSsetting the format你通过PHP date method做到这一点:

echo "<pubdate>".date(DATE_RSS, strtotime($row['Date']))."</pubdate>"; 

确保您<pubDate>元素出现在其父<item>节点中。

另请注意,此元素区分大小写。您必须输出pubDate的大写D,而不是全部小写(pubdate),因为其他元素可以。

+0

feedvalidator告诉我:'星期五,24 Feb 12 18:11:13 -0700'是错误的。它似乎符合这个例子。你有什么想法为什么会发生? http://feed2.w3.org/check.cgi?url=http%3A%2F%2Flujanventas.com – lisovaccaro 2012-02-25 03:53:55

+0

将年份设置为四位数字,并且应该将其全部修复@lis – random 2012-02-25 04:01:50

+0

使用DATE_RSS可能更好'而不是'DATE_RFC822',因为在后者生成的日期中,年仅由两位数表示。 – 2013-11-08 01:02:11

1

只是一个提示:PHP日期函数中的-r开关是RFC 2822格式的简写,实际上它确实产生了四位数的年份。

查看PHP Doc仅供参考。