RSS: pubDate mit RFC-822 ?

SuReBuRn

Mitglied
Hallo!

Ich generiere beim Newsschreiben meine Feeds automatisch. Nun, ich speichere ich alle News im Format date("Y-m-d H:i:s"). Bei der Generierung des Feeds werden jeweils die letzten 25 Einträge in die xml-Datei geschrieben und das Datum aus der Datenbank geholt.

Brauche ja aber date(r) für die Validierung. Nun meine Frage: Wie kann ich das Datum aus der DB für meine Feeds am besten umwandeln?

Wäre es am besten das Datum aus der Datenbank in einen timestamp umzuwandeln und dann so vorzugehen:

PHP:
$pubDate = date(r, $timestamp);
?
 
Zuletzt bearbeitet:
Du kannst das Datum auch gleich von der Datenbank formatieren lassen. Bei MySQL wäre es etwa:
Code:
DATE_FORMAT(NOW(), "%a, %d %b %Y %H:%i:%s UTC")
 
Und now() könnte man doch auch mit dem gespeicherten Datum (Spalte) ersetzen, falls man das nur für den RSS-Feed so haben will, richtig? *Ich frag lieber jetzt bevor ich mich mal selber an sowas ransetze :)* Und UTC bedeutet was dabei?


Gruß Radhad
 
Ja, die MySQL-Funktion NOW() liefert das aktuelle Datum samt Zeit und kann daher durch einen Spaltenbezeichner ersetzt werden. Das „UTC“ ist die Angabe der Zeitzone (Koordinierte Weltzeit), da MySQL diese als Standardzeitzone eingestellt hat.
 
Hallo zusammen,

bei mir klappt das irgendwie nicht. In meiner DB habe ich das Datum als 2008-02-20 18:00:00 abgespeichert.

Jetzt dachte ich nehme den oben genannten Code:

PHP:
<?php echo date(r, $row['meindatum']); ?>

Aber nun bekommen ich auf http://www.feedvalidator.org eine Fehlermeldung:

Implausible date: <pubDate>Thu, 01 Jan 1970 01:33:28 +0100</pubDate>

Wer kann mir weiter helfen?

Ich möchte doch das Datum aus der DB <pubDate>Thu, 20 Feb 2008 18:00:00 +0100</pubDate>

Grüße
Denis
 
Die date()-Funktion kann mit dem Format, das die Datenbank liefert, nichts anfangen. Du müsstest es erst entsprechend konvertieren.
 
Warum benutzt du nicht die von Gumbo vorgeschlagene Lösung?

Das Problem bei deinem Versuch ist, dass die Funktion [phpf]date[/phpf] einen Unix Zeitstempel erwartet und kein Datum im Format des MySQL datetime Felds.
Alternativ könntest du das ganze mit [phpf]strtotime[/phpf] in einen Unix Zeitstempel umwandeln.
 
Welchen Vorschlag meinst Du? Diesen:

Code:
DATE_FORMAT(NOW(), "%a, %d %b %Y %H:%i:%s UTC")

Dann verstehe ich das mit dem NOW() nicht. Da wo das NOW() steht habe ich bei sonstigen Abfragen immer das Feld mit dem Datum. Dann wird die Ausgabe in ein deutsches Datum umgewandelt.

ich habe das jetzt so gelöst:

Code:
<pubDate>
<?php $pubdate = strtotime($row['eingestellt']); ?>
<?php $pubdate = date(r, $pubdate); ?>
<?php echo $pubdate; ?></pubDate>

und geht, JUHU!
 
Zuletzt bearbeitet:
Zurück