PHP正则表达式更改日期格式

时间:2012-02-28 08:10:02

标签: regex preg-replace strtotime

我几乎尝试了10个小时来改变适合我需要的日期格式,但无法成功。我尝试过以下示例的Preg_Replace Strotime函数。

目前的日期格式为:02-25-2006 想转换于: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);  

2 个答案:

答案 0 :(得分:1)

ad regexp:

如果要在替换表达式中使用部分匹配,则必须在正则表达式中标记捕获组!你可以通过将正则表达式模式的部分括在括号中来实现。所以你的正则表达式应该是/(\d{2})-(\d{2})-(\d{4})/regexp docs中的更多信息,尤其是subpatterns上的部分。

ad strtotime:

如果您选择-作为日期部分分隔符,那么天必须首先出现。因此,02/20/201220-02-2012一样有效,02-20-2012则不会。有关支持的日期/时间格式的更多详细信息,请参阅docs

答案 1 :(得分: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