2012-08-27 52 views
1

我有一個從我設計的自定義博客生成的RSS源;不過,我的其中一個帖子每天都會在我的RSS閱讀器中顯示。我終於檢查了日期,並且看到它每天都顯示出來,但是從2000年開始.Google Reader顯示日期是每天更新帖子的日期,但是查看XML代碼,即顯示2000年的日期。所有其他帖子都是顯示爲1969年PHP/RSS飼料約會設置

這裏是我有我的PHP代碼設置:

$rssfeed.='<pubDate>'.date("D, d M Y H:i:s O",strtotime($date)).'</pubDate>'; 

這是正確的方法是什麼?

編輯︰我可能是一個白癡 - 我不顯示$日期作爲我的代碼中的變量 - 出於好奇,應該有什麼?

+0

無關,但PHP和RSS源肯定會約會,他們一直在關注對方多年,現在是他們開始走出去的時候了。 – Cyclone

+0

您可以使用日期('r')或日期('r',strtotime($ date)) 如果帖子顯示1969,則$日期可能無法使用正確的格式,並且時間過期失敗。 –

回答

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中。我刪除了,一切都很好!

2

pubDate頻道內容的發佈日期。例如,紐約時報每天發佈一次,發佈日期每24小時翻轉一次。這是渠道發佈日期發生變化的時間。 RSS中的所有日期時間均符合RFC 822的日期和時間規範,但年份可以用兩個字符或四個字符(首選四個)表示。 週六,2002年07 9 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