Quel est le format correct pour le flux RSS pubdate?
j'ai du mal à faire fonctionner correctement la date de mon flux RSS. Savez-vous quelle est la date correcte pour le montrer?
je l'ai stocké dans un champ appelé creation_date dans ce format: 2012-08-14 10:17:12
Alors, je prends ça:
$pubDate = $article[creation_date];
Puis-je convertir:
$pubDate= date("Y-m-d", strtotime($pubDate));
Puis dans ma balise d'élément de je la place:
<pubdate>'.date("l, F d, Y", strtotime($pubDate)).'</pubdate>
y a - t-il quelque chose que je ne vois pas?
8 réponses
la fonction PHP date a déjà un moyen de formater les dates conformes à pubDate (RFC 2822):
date('r', $timestamp);
Résolu:
$pubDate = $article[creation_date];
$pubDate= date("D, d M Y H:i:s T", strtotime($pubDate));
puis dans mon code echo:
<pubDate>'.$pubDate.'</pubDate>
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
Voir pubDate
définition spécification RSS 2.0:
toutes les dates dans RSS sont conformes à la Date et l'Heure de Spécifications de la RFC 822, sauf que l'année peut être exprimée avec deux ou quatre caractères (quatre de préférence).
Voici des exemples de date-heure RFC822 valide:
<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 Problématique de la RFC 822 date de valeur.
alors que la réponse acceptée ("D, d M Y H:i:s T")
fonctionne comme prévu, la plupart du temps, il n'est pas correct à 100%. Dans les situations multilingues cette chaîne peut donner du texte non anglais qui ne sera pas accepté comme conforme RFC. Pour être sûr que la version anglaise est utilisée, utilisez "r"
.
Rss pubDate
utilise RFC 2822 standards. Cela peut être réaliser creux php Date fonction avec l'argument r
<?php
$now = time();
$pubDate= date('r', $now);
echo "<pubDate>$pubDate</pubDate>";
//<pubDate>Thu, 20 Nov 2014 18:59:18 UTC</pubDate>
?>
Si vous préférez la DateTime classe, utilisez:
$pubDate = new DateTime();
echo $pubDate->format(DateTime::RSS);
Qu'en est-il DateTime
objet ( 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 encore mieux
$dto = \DateTime::createFromFormat(\DateTime::RSS, $RSSDate);
$formattedDate = $dto->format('d-M-Y H:i:s');
je l'ai utilisé comme ceci:
$item->date = date('D, d M Y H:i:s GMT', strtotime($myBlogPublishedTime));