RSSフィードの日付を正しく実行するのに問題があります。それを示す適切な日付を知っていますか?
このフォーマットで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>
見えないものはありますか?
解決済み:
$pubDate = $article[creation_date];
$pubDate= date("D, d M Y H:i:s T", strtotime($pubDate));
それから私のエコーコードで:
<pubDate>'.$pubDate.'</pubDate>
PHP date関数には、pubDate(RFC 2822)準拠の日付をフォーマットする方法が既にあります。
date('r', $timestamp);
RSS 2.0 Specification のpubDate
定義を参照してください:
RSSのすべての日時は、RFC 822の Date and Time Specification に準拠しています。ただし、年は2文字または4文字(4文字を推奨) )。
有効な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>
次の形式を使用します:D, d M Y H:i:s O
。 http://php.net/manual/en/class.datetime.php を参照してください
または、DateTime定数を使用してより簡単に使用できます:DateTime::RSS
Rss pubDate
は RFC 2822標準を使用します 。 php
でこれを実現するには、 Date 関数で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);
受け入れられた答え("D, d M Y H:i:s T")
はほとんどの場合期待どおりに機能し、100%正確ではありません。多言語環境では、この文字列は、RFC準拠として受け入れられない非英語テキストを提供する場合があります。英語バージョンが使用されていることを常に確認するには、"r"
。
DateTime
object (PHP 5> = 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');
最も簡単な方法は、事前定義済みのDATE_RSS定数を使用することです(PHP 5.1.0)以降で使用可能)。
$pubDate = date(DATE_RSS, strtotime($pubDate));
私はこのように使用しました:
$item->date = date('D, d M Y H:i:s GMT', strtotime($myBlogPublishedTime));