2015-10-14 108 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參數? –