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?

24
demandé sur splash 2012-08-16 22:28:43

8 réponses

la fonction PHP date a déjà un moyen de formater les dates conformes à pubDate (RFC 2822):

date('r', $timestamp);
52
répondu Nebel54 2014-07-29 08:43:55

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>
24
répondu Rusty Schmidt 2012-08-23 00:30:41

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
répondu Edd 2013-01-09 13:57:54

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.

10
répondu splash 2014-11-20 20:56:47

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

5
répondu Charalampos Tsimpouris 2015-04-20 11:31:39

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);
5
répondu Pedro Lobito 2018-03-04 14:08:23

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');
4
répondu Paul T. Rawkeen 2013-03-19 20:10:23

je l'ai utilisé comme ceci:

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

mon hp rss de l'échantillon

1
répondu matao 2013-03-12 06:26:19