2012-08-16 5 views
20

Ich habe Probleme, das Datum meines RSS-Feeds richtig ausgeführt zu bekommen. Weißt du, was das richtige Datum ist, um es zu zeigen?Was ist das richtige Format für RSS-Feed-Pubdate?

ich es in einem Feld namens creation_date in diesem Format gespeichert haben: 2012-08-14 10:17:12

Dann packe ich es:

$pubDate = $article[creation_date]; 

Dann konvertiere ich es:

$pubDate= date("Y-m-d", strtotime($pubDate)); 

dann in meinem Artikel Tag ich es setzen:

<pubdate>'.date("l, F d, Y", strtotime($pubDate)).'</pubdate>

Gibt es etwas, das ich nicht sehe?

+0

mögliche Duplikate von [Wie Sie das Datum in Element auf RSS-Feed richtig platzieren] (http://stackoverflow.com/questions/9405309/how-to-properly-place-date-in-pubdate-element-on-- rss-feed) – random

Antwort

19

Gelöst:

$pubDate = $article[creation_date]; 
    $pubDate= date("D, d M Y H:i:s T", strtotime($pubDate)); 

dann in meinem echo'd Code:

<pubDate>'.$pubDate.'</pubDate> 
1

ich so verwendet haben:

$item->date = date('D, d M Y H:i:s GMT', strtotime($myBlogPublishedTime)); 

my hp rss sample

3

Was DateTime Objekt (PHP 5> = 5.2.0)

\DateTime::createFromFormat(\DateTime::RSS, $RSSDate); // converting RSS date to object 

oder

date(\DateTime::RSS, $timestamp); // formatting timestamp to RSS time 

oder beide

$dto = \DateTime::createFromFormat(\DateTime::RSS, $RSSDate); 
date('d-M-Y H:i:s', $dto->getTimestamp()); // formatting RSS date to anything you want 

oder noch besser

$dto = \DateTime::createFromFormat(\DateTime::RSS, $RSSDate); 
$formattedDate = $dto->format('d-M-Y H:i:s'); 
9

Siehe pubDate Definition in RSS 2.0 Specification:

Alle Datumsangaben in RSS entsprechen der Date and Time Specification of RFC 822, mit der Ausnahme, dass das Jahr mit zwei Zeichen oder vier Zeichen (vier bevorzugt) ausgedrückt werden kann.

Hier sind Beispiele für gültige RFC822 Datum Zeiten:

<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> 

Siehe auch Problematical RFC 822 date-time value.

+0

http://asg.web.cmu.edu/rfc/rfc822.html#sec-5 wurde entfernt. –

+0

@PedroLobito hat den Link aktualisiert – splash

49

Die PHP-Datumsfunktion bereits einen Weg pubDate zu formatieren (RFC 2822) konform Termine:

date('r', $timestamp); 
5

Rss pubDate die RFC 2822 standards verwendet. Dies kann r

<?php 
$now = time(); 
$pubDate= date('r', $now); 

echo "<pubDate>$pubDate</pubDate>"; 
//<pubDate>Thu, 20 Nov 2014 18:59:18 UTC</pubDate> 
?> 

Trog php Date Funktion mit dem Argument sein erreichen Wenn Sie die DateTime Klasse, bevorzugen:

$pubDate = new DateTime(); 
echo $pubDate->format(DateTime::RSS); 
5

Während die akzeptierte Antwort ("D, d M Y H:i:s T") funktioniert wie die meiste Zeit zu erwarten, es ist nicht 100% richtig. In mehrsprachigen Situationen kann diese Zeichenfolge einen nicht englischen Text enthalten, der nicht als RFC-kompatibel akzeptiert wird. Um immer sicher zu sein, dass die englische Version verwendet wird, verwenden Sie "r".