2012-02-28 41 views
0

我幾乎嘗試了10個小時來更改日期格式,以適應我的需求,但無法成功。我已經用以下示例嘗試了Preg_Replace Strotime函數。PHP正則表達式更改日期格式

當前的日期格式爲:2006年2月25日 要轉換爲:2006-02-25

以下是我已經試過的例子名單:

publishdate = "02-20-2012"; 
echo preg_replace("/\d{2}-\d{2}-\d{4}/","$3/$1/$2",$publishdate); 

$dateString= '2006-09-14'; 
echo date("m/d/Y", strtotime($dateString)); 



$dateString1= '02-20-2012'; 
echo date("Y/m/d", strtotime($dateString1)); 



$date1 = '05-25-2010'; 
echo date('Y-m-d', strtotime($date1)); 

$dateString2= '02-20-2012'; 
echo preg_replace("/(\d{2})-(\d{4})-(\d{2})/","$2/$3/$1",$dateString2); 

回答

1

廣告正則表達式:

如果要在替換表達式中使用部分匹配,則必須在您的正則表達式中標記捕獲組!你可以通過將你的正則表達式模式的一部分放在圓括號中來實現。所以你的正則表達式應該是/(\d{2})-(\d{2})-(\d{4})/regexp docs的更多信息,尤其是subpatterns的部分。

廣告的strtotime:

如果你選擇-的日期部分分隔符,天必須是第一位的。因此02/20/2012將工作以及20-02-201202-20-2012不會。有關支持日期/時間格式的更多詳細信息,請參閱docs

0

最簡單的方法是使用date_create_from_format

$date1='02-25-2006'; 
echo($date1); 
echo "<br>"; 
$newdate = date_format(date_create_from_format('m-d-Y', $date1),'Y-m-d'); 
echo $newdate; 

然後輸出將2006-02-25