RSS feed pubdate的正确格式是什么?

时间:2012-08-16 18:28:43

标签: php rss

我无法正确运行RSS Feed的日期。你知道它的正确日期是什么吗?

我把它存储在一个名为creation_date的字段中,格式为:2012-08-14 10:17:12

然后我抓住它:

$pubDate = $article[creation_date];

然后我转换它:

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

然后在我的商品标签中放置它:

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

有什么我没看到的吗?

9 个答案:

答案 0 :(得分:53)

PHP日期函数已经有一种格式化pubDate(RFC 2822)日期的方法:

date('r', $timestamp);

答案 1 :(得分:25)

解决:

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

然后在我的echo代码中:

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

答案 2 :(得分:12)

请参阅RSS 2.0 Specification中的pubDate定义:

  

RSS中的所有日期时间均符合Date and Time Specification of RFC 822,但年份可以用两个字符或四个字符(四个首选)表示。

以下是有效RFC822日期时间的示例:

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

另见Problematical RFC 822 date-time value

答案 3 :(得分:11)

使用以下格式:D, d M Y H:i:s O。见http://php.net/manual/en/class.datetime.php

或者使用DateTime常量以便更轻松地使用:DateTime::RSS

答案 4 :(得分:6)

Rss pubDate使用RFC 2822 standards。您可以通过在Date函数上调用php参数在r中实现此目的,即:

<?php
$pubDate= date('r', time());
echo "<pubDate>$pubDate</pubDate>";
# <pubDate>Thu, 20 Nov 2014 18:59:18 UTC</pubDate>
?>

如果您更喜欢DateTime课程,请使用:

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

答案 5 :(得分:5)

DateTime 对象 PHP 5&gt; = 5.2.0

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

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

或两者

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

甚至更好

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

答案 6 :(得分:5)

虽然接受的答案("D, d M Y H:i:s T")大部分时间都按预期工作,但并非100%正确。在多语言情况下,此字符串可能会提供非英语文本,不会被接受为RFC兼容。要始终确保使用英文版本,请使用"r"

答案 7 :(得分:2)

最简单的方法是使用DATE_RSS预定义常量(自PHP 5.1.0起可用)。

$pubDate = date(DATE_RSS, strtotime($pubDate));

答案 8 :(得分:1)

我用过这样的话:

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

my hp rss sample