我有一個字符串日期,我想在PHP中將其轉換爲RSS pubDate。RSS pubDate未通過驗證
<?php echo date('r',strtotime('14/10/2015 2:58:27 a.m.'));?>
但上面的是給我六十年代的一些野生的結果。
在這種情況下'r'是不夠的嗎?我需要做一些奇特的正則表達式來匹配我的字符串嗎?
我有一個字符串日期,我想在PHP中將其轉換爲RSS pubDate。RSS pubDate未通過驗證
<?php echo date('r',strtotime('14/10/2015 2:58:27 a.m.'));?>
但上面的是給我六十年代的一些野生的結果。
在這種情況下'r'是不夠的嗎?我需要做一些奇特的正則表達式來匹配我的字符串嗎?
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
現場演示
由於a.m的格式不正確,我猜測OP代碼無法正常工作,但這只是一種猜測,因爲我沒有對它進行測試。 –
您的舊解決方案工作的方式。 –
@PaulCrovella好吧,很高興知道,tks。 –
你需要告訴PHP的日期是不是在YYYY-MM-DD格式(或MM-DD -yyyy)所以strtotime可以處理它。
嘗試
<?php echo date('r',strtotime('14/10/2015 2:58:27 a.m.' . 'GMT'));?>
這對我不起作用。我得到相同的結果。你是否改變了添加GMT參數? –
你需要一個特定日期或只是當前的日期? –
一個特定的日期,將以類似於上面的字符串形式出現:) –