RSS pubDate验证失败

时间:2015-10-14 03:20:18

标签: php rss timestamp

我有一个字符串日期,我想在PHP中转换为RSS pubDate。

<?php echo date('r',strtotime('14/10/2015 2:58:27 a.m.'));?>

但上述情况在六十年代给了我一些疯狂的结果。

在这种情况下'r'不够吗?我需要做一些花哨的正则表达式来匹配我的字符串吗?

2 个答案:

答案 0 :(得分:1)

Rss pubDate使用RFC 2822标准。使用DateTime class并利用预定义常量DateTime::RSS

<?php
    date_default_timezone_set("Europe/Lisbon");
    $raw = "14/10/2015 2:58:27 a.m.";
    $raw = str_replace(".", "", $raw); //am/pm
    if(strpos($raw,'am') !== false){ $ampm = "a";}else{$ampm = "A";}
    $time = DateTime::createFromFormat("d/m/Y g:i:s $ampm", $raw);
    echo $time->format(DateTime::RSS);
    //Wed, 14 Oct 2015 02:58:27 +0000
?>

P.S。:将default_timezone更改为您的http://php.net/manual/en/timezones.php

现场演示

https://eval.in/450161

答案 1 :(得分:0)

你需要告诉php日期不是yyyy-mm-dd格式(或mm-dd-yyyy)所以strtotime可以处理它。

尝试

<?php echo date('r',strtotime('14/10/2015 2:58:27 a.m.' . 'GMT'));?>