2012-02-28 6 views
0

Я почти пробовал в течение 10 часов, чтобы изменить формат даты, соответствует моим потребностям, но не смог добиться успеха. Я попробовал функции Preg_Replace Strotime со следующими примерами.PHP Регулярное выражение для изменения формата даты

Текущий формат даты: 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); 

ответ

1

объявление регулярное выражение:

вы должны пометить группы захвата в вашем регулярном выражении, если вы хотите использовать частичные совпадения в вашем замещающем выражении! вы делаете это, закрывая части вашего шаблона регулярного выражения в круглых скобках. поэтому ваше регулярное выражение должно быть /(\d{2})-(\d{2})-(\d{4})/. больше информации в regexp docs, в частности раздел на subpatterns.

объявление StrToTime:

если вы выбираете - как часть разделителя даты, дни должен прийти первым. таким образом, 02/20/2012 будет работать так же, как и 20-02-2012, а 02-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.