2012-02-23 59 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僅供參考。

相關問題