PHP生成RSS pubDate所需日期时间格式的方法

作者:袖梨 2022-06-24

SS / ATOM 的格式要产生都很简单, 麻烦的是日期格式的产生(RSS => pubDate, ATOM => created).

发现 PHP Date 有提供这些需要的相关全域变量可以使用:(PHP 5.1.1 以后开始支援这些全域变量)

 echo DATE_RSS; // D, d M Y H:i:s O

    echo DATE_ATOM; // Y-m-dTH:i:sP

    echo date(DATE_RSS); // Wed, 23 Apr 2008 19:27:19 +0800

    echo date(DATE_ATOM); // 2008-04-23T19:27:38+08:00

如果是 MySQL timestamp/datetime format 直接拉出来的资料, 就可以直接使用:

 date(DATE_RSS, ($MYSQL_DATETIME_DATA));

目前支持的日期全域变量有以下:

 DATE_ATOM: Atom  Atom (example: 2005-08-15T15:52:01+00:00)

    DATE_COOKIE: HTTP Cookies (example: Monday, 15-Aug-05 15:52:01 UTC)

    DATE_ISO8601: ISO-8601 (example: 2005-08-15T15:52:01+0000)

    DATE_RFC822: RFC 822 (example: Mon, 15 Aug 05 15:52:01 +0000)

    DATE_RFC850: RFC 850 (example: Monday, 15-Aug-05 15:52:01 UTC)

    DATE_RFC1036: RFC 1036 (example: Mon, 15 Aug 05 15:52:01 +0000)

    DATE_RFC1123: RFC 1123 (example: Mon, 15 Aug 2005 15:52:01 +0000)

    DATE_RFC2822: RFC 2822 (Mon, 15 Aug 2005 15:52:01 +0000)

    DATE_RFC3339: Same as DATE_ATOM

    DATE_RSS: RSS (Mon, 15 Aug 2005 15:52:01 +0000)

    DATE_W3C: World Wide Web Consortium (example: 2005-08-15T15:52:01+00:00)

PHP 预定义的日期格式

自 PHP 5.1.1 起定义有以下常量来提供标准日期表达方法,可以用于日期格式函数

 echo DATE_RSS; // D, d M Y H:i:s O

    echo DATE_ATOM; // Y-m-dTH:i:sP

    echo date(DATE_RSS); // Wed, 23 Apr 2008 19:27:19 +0800

    echo date(DATE_ATOM); // 2008-04-23T19:27:38+08:00

虽然格式简单, 但用PHP内的预定义格式岂不更加方便.

目前PHP所有支持的日期格式:

DATE_ATOM: Atom  Atom (example: 2005-08-15T15:52:01+00:00)

    DATE_COOKIE: HTTP Cookies (example: Monday, 15-Aug-05 15:52:01 UTC)

    DATE_ISO8601: ISO-8601 (example: 2005-08-15T15:52:01+0000)

    DATE_RFC822: RFC 822 (example: Mon, 15 Aug 05 15:52:01 +0000)

    DATE_RFC850: RFC 850 (example: Monday, 15-Aug-05 15:52:01 UTC)

    DATE_RFC1036: RFC 1036 (example: Mon, 15 Aug 05 15:52:01 +0000)

    DATE_RFC1123: RFC 1123 (example: Mon, 15 Aug 2005 15:52:01 +0000)

    DATE_RFC2822: RFC 2822 (Mon, 15 Aug 2005 15:52:01 +0000)

    DATE_RFC3339: Same as DATE_ATOM

    DATE_RSS: RSS (Mon, 15 Aug 2005 15:52:01 +0000)

    DATE_W3C: World Wide Web Consortium (example: 2005-08-15T15:52:01+00:00)

 

生成rss例子

header("Content-type: application/xml");  //定义header头,以防止chrome内核的浏览器不支持rss订阅,如果不支持就输出xml格式的文件
/**
 * 查询数据库,获取要输出rss的数据
 */
$database = "nameofthedatabase";
$dbconnect = mysql_pconnect(localhost, dbuser, dbpassword);
mysql_select_db($database, $dbconnect);
$query = "select link, headline, description from `headlines` limit 15";
$result = mysql_query($query, $dbconnect);
while ($line = mysql_fetch_assoc($result)) {
    $return[] = $line;
}
$now = date("D, d M Y H:i:s T");
$output = "
            
                
                    山东道路交通安全网-$lanmu
                    http://sdjtaq.cn/rss
                    Latest 100 articles of $lanmu
                    $now
                    $now
                    http://someurl.com
                    [email protected]
                    [email protected]
            ";
foreach ($artList as $line) {
    $date = strtotime($line['add_time']); //将数据库的时间格式化成时间戳
    $output .= " n"
            . "" . $line['title'] . "n"
            . " http://sdjtaq.cn/aq_show_" . $line['id'] . ".htmln"
            . "n"
            . "" . date("D, d M Y H:i:s O", $date) . "n"
            . "n";
}
$output .= "n";
echo $output;

相关文章

精彩推荐