2012-02-23 13 views
9

Estoy usando RSS Graffitty para publicar elementos RSS en una página de Facebook.Cómo colocar correctamente la fecha en el elemento <pubdate> en la fuente RSS

La aplicación me dijo las cosas que faltaban la fecha de publicación por lo que añade esta etiqueta:

echo "<pubdate>".$row['Date']."</pubdate>"; 

$ fila [ 'Fecha'] se obtiene de mi base de datos MySQL y es una columna de fecha y hora.

¿Cómo debo formatearlo/repetirlo para que sea reconocido por la fuente RSS? ¿Debo cambiar el elemento?

, gracias

+0

Tenga cuidado de utilizar 'pubDate' y no' pubdate' – random

Respuesta

13

RSS 2.0 especificaciones sobre el elemento <pubDate> deben ajustarse a la RFC 822 Date and Time syntax. Es decir, para que se muestre en el siguiente formato:

Vier 21 Dic 2012 10:00:01 GMT

Si Error en su feed RSS a través de la W3C Feed Validator se le nota estos ejemplos de válidos RFC822 fecha-tiempos:

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

Si desea utilizar el formato de MySQL, que se podría llamar la columna con la siguiente use of date_format(), el ajuste de la UTC modificador/marcador como sea necesario:

date_format(Date, '%a, %d %b %Y %H:%i:%s') 

O bien, puede hacerlo a través de la PHP date method con DATE_RSSsetting the format para usted:

echo "<pubdate>".date(DATE_RSS, strtotime($row['Date']))."</pubdate>"; 

Asegúrese de que el elemento de <pubDate> aparece dentro de su nodo padre <item>.

También tenga en cuenta que este elemento distingue entre mayúsculas y minúsculas. Debe producir pubDate con la mayúscula D y no todas las minúsculas (pubdate) como pueden hacerlo otros elementos.

+0

El feedvalidator me dice: 'Vie, 24 Feb 12 18:11:13 -0700' es incorrecto. Parece obediente con el ejemplo. ¿Tienes alguna idea de por qué podría estar pasando? http://feed2.w3.org/check.cgi?url=http%3A%2F%2Flujanventas.com – lisovaccaro

+0

Haga que el año tenga cuatro dígitos y eso debería arreglarlo todo @lis – random

+0

Probablemente sea mejor usar 'DATE_RSS 'en lugar de' DATE_RFC822' ya que en las fechas generadas por este último, los años están representados por solo dos dígitos. –

1

Solo una pista: el modificador -r en la función de fecha php es la abreviatura del formato RFC 2822, que en realidad produce un año de cuatro dígitos.

Consulte PHP Doc para referencia.

Cuestiones relacionadas