web-dev-qa-db-fra.com

Quel est le format correct pour la publication d'un flux RSS?

Je ne parviens pas à faire fonctionner correctement la date de mon flux RSS. Savez-vous quelle est la date appropriée pour le montrer?

Je l'ai stocké dans un champ appelé creation_date dans ce format: 2012-08-14 10:17:12

Puis je l'attrape:

$pubDate = $article[creation_date];

Puis je le convertis:

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

Ensuite, dans ma balise d'item je la place:

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

Y a-t-il quelque chose que je ne vois pas?

25
Dan Fein

Résolu:

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

puis dans mon code renvoyé:

 <pubDate>'.$pubDate.'</pubDate>
25
Dan Fein

La fonction de date PHP permet déjà de formater des dates conformes à pubDate (RFC 2822):

date('r', $timestamp);
52
Nebel54

Voir la définition de pubDate dans Spécification RSS 2.0 :

Toutes les dates dans RSS sont conformes à la spécification de date et heure de la RFC 822 , à l'exception du fait que l'année peut être exprimée avec deux ou quatre caractères (quatre de préférence).

Voici des exemples de dates et d'heures RFC822 valides:

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

Voir aussi valeur date-heure problématique de la RFC 822 .

11
splash

Utilisez ce format: D, d M Y H:i:s O. Voir http://php.net/manual/en/class.datetime.php

Ou utilisez les constantes DateTime pour une utilisation plus facile: DateTime::RSS

11
Edd

Rss pubDate utilise les normes RFC 2822 . Vous pouvez y parvenir dans php en appelant l'argument r dans la fonction Date , c'est-à-dire:

<?php
$pubDate= date('r', time());
echo "<pubDate>$pubDate</pubDate>";
# <pubDate>Thu, 20 Nov 2014 18:59:18 UTC</pubDate>
?>

Si vous préférez la classe DateTime , utilisez:

$pubDate = new DateTime();
echo $pubDate->format(DateTime::RSS);
6
Pedro Lobito

Alors que la réponse acceptée ("D, d M Y H:i:s T") fonctionne comme prévu la plupart du temps, elle n’est pas correcte à 100%. Dans les situations multilingues, cette chaîne peut donner un texte non anglais qui ne sera pas accepté comme conforme à RFC. Pour être toujours sûr que la version anglaise est utilisée, utilisez "r".

5

Qu'en est-ilDateTimeobject (PHP 5> = 5.2.0)

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

ou

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

ou les deux

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

ou même mieux

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

La méthode la plus simple consiste à utiliser la constante prédéfinie DATE_RSS (disponible depuis PHP 5.1.0).

$pubDate = date(DATE_RSS, strtotime($pubDate));
1
weszy

J'ai utilisé comme ça:

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

mon échantillon hp rss

1
matao