2012-08-16 244 views
20

Tengo problemas para ejecutar correctamente la fecha de mi fuente RSS. ¿Sabes cuál es la fecha adecuada para mostrarlo?¿Cuál es el formato correcto para pubdate de feed RSS?

que he almacenado en un campo llamado creation_date en este formato: 2012-08-14 10:17:12

Entonces lo agarro:

$pubDate = $article[creation_date]; 

Entonces me convierto:

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

a continuación, dentro de mi etiqueta item lo coloco:

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

¿Hay algo que no esté viendo?

+0

posible duplicado de [Cómo colocar correctamente la fecha en el elemento en la fuente RSS] (http://stackoverflow.com/questions/9405309/how-to-properly-place-date-in-pubdate-element-on- rss-feed) – random

Respuesta

19

resuelto:

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

entonces en mi código echo'd:

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

he utilizado como esto:

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

my hp rss sample

3

¿Qué hay de DateTime objeto (PHP 5> = 5.2.0)

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

o

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

o ambos

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

o incluso mejor

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

Ver pubDate definición en RSS 2.0 Specification:

Todas las fechas y horas en RSS se ajustan a Date and Time Specification of RFC 822, con la excepción de que el año se puede expresar con dos caracteres o cuatro caracteres (cuatro preferidos).

Éstos son ejemplos de RFC822 fecha-horas de validez:

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

Ver también Problematical RFC 822 date-time value.

+0

http://asg.web.cmu.edu/rfc/rfc822.html#sec-5 eliminado. –

+0

@PedroLobito actualizó el enlace – splash

49

La función de la fecha de PHP ya tiene una manera de formatear pubDate (RFC 2822) que cumplen con las fechas:

date('r', $timestamp); 
5

Rss pubDate utiliza el RFC 2822 standards. Esto puede ser lograr a través de php Date función con argumento r

<?php 
$now = time(); 
$pubDate= date('r', $now); 

echo "<pubDate>$pubDate</pubDate>"; 
//<pubDate>Thu, 20 Nov 2014 18:59:18 UTC</pubDate> 
?> 

Si prefiere el DateTime clase, utilice:

$pubDate = new DateTime(); 
echo $pubDate->format(DateTime::RSS); 
5

Mientras que la respuesta aceptada ("D, d M Y H:i:s T") funciona como se espera la mayor parte del tiempo, no es 100% correcto En situaciones multilingües, esta cadena puede dar texto no en inglés que no será aceptado como RFC. Para estar seguro de que se utiliza la versión en inglés, use "r".

Cuestiones relacionadas