2012-08-16 10 views
20

Je n'arrive pas à obtenir correctement la date de mon flux RSS. Savez-vous quelle est la bonne date pour le montrer?Quel est le format correct pour le flux RSS pubdate?

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

Alors je le saisir:

$pubDate = $article[creation_date]; 

Je le convertir:

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

Ensuite, dans mon étiquette point je la place:

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

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

+0

duplication possible de [Comment placer correctement la date dans l'élément sur le flux RSS] (http://stackoverflow.com/questions/9405309/how-to-properly-place-date-in-pubdate-element-on- rss-feed) – random

Répondre

19

Résolu:

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

puis dans mon code echo'd:

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

Je l'ai utilisé comme ceci:

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

my hp rss sample

3

Qu'en est-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 mieux encore

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

Voir pubDate définition RSS 2.0 Specification:

Toutes les date-heures dans RSS sont conformes au Date and Time Specification of RFC 822, à l'exception que l'année peut être exprimée avec deux caractères ou quatre caractères (quatre préférés).

Voici des exemples de dattiers fois 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 Problematical RFC 822 date-time value.

+0

http://asg.web.cmu.edu/rfc/rfc822.html#sec-5 a été supprimé. –

+0

@PedroLobito a mis à jour le lien – splash

49

La fonction PHP date a déjà une façon de formater pubDate (RFC 2822) dates conformes:

date('r', $timestamp); 
5

Rss pubDate utilise le RFC 2822 standards. Cela peut être réaliser la fonction bac php Date 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

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

Questions connexes