2012-02-28 40 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