2015-10-14 101 views
0

我有一个字符串日期,我想在PHP中将其转换为RSS pubDate。RSS pubDate未通过验证

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

但上面的是给我六十年代的一些野生的结果。

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

+0

你需要一个特定日期或只是当前的日期? –

+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

+0

由于a.m的格式不正确,我猜测OP代码无法正常工作,但这只是一种猜测,因为我没有对它进行测试。 –

+1

您的旧解决方案工作的方式。 –

+0

@PaulCrovella好吧,很高兴知道,tks。 –

0

你需要告诉PHP的日期是不是在YYYY-MM-DD格式(或MM-DD -yyyy)所以strtotime可以处理它。

尝试

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

这对我不起作用。我得到相同的结果。你是否改变了添加GMT参数? –