Формат даты dd / mm / yyyy до yyyy-mm-dd PHP

У меня есть форма, в которой дата вводится в формате Великобритании, и мне нужно преобразовать ее в

yyyy-mm-dd 

например, введенная дата: 31/03/2013 которую я хочу конвертировать в '2013-03-31' для вставки базы данных.

Я использую следующее, которое причудливо работает только иногда:

 $dateInput = $mysqli->real_escape_string($_POST['date']); $show_date = date('Ym-d', strtotime($dateInput)); 

Есть лучший способ сделать это?

Возможно, вы захотите использовать DateTime :: createFromFormat :

 $show_date = DateTime::createFromFormat('d/m/Y', $dateInput)->format('Ym-d'); 

попробуй.

 $dateInput = explode('/','31/03/2013'); $ukDate = $dateInput[2].'-'.$dateInput[1].'-'.$dateInput[0]; 

после чего причудливо работает только иногда:

 $show_date = date('Ym-d', strtotime($dateInput)); 

это не другой более короткий способ сделать это …. и я использую это всю свою жизнь .. havn't не замечает никаких вещей, которые происходят с ним до сих пор .. проверьте, есть ли какие-то другие вещи,

иначе сделать это

 $timestamp = strtotime(str_replace('/', '.', $dateInput)); $mysql_date = date('Ym-d', $timestamp); 

PHP 5.3 и выше

Используйте DateTime :: createFromFormat. Он позволяет указать точную маску – используя синтаксис date () – для синтаксического анализа входящих дат.

PHP 5.2 и ниже

Вам придется анализировать элементы (год, месяц, день, час, минута, секунда) вручную с помощью substr () и передавать результаты в mktime () , которые построят вам временную метку.

Пара альтернативных методов. Оба выхода 2013-03-31:

Метод 1 – «Look ma, no functions»

 <?php $in = '31/03/2013'; echo $in[6].$in[7].$in[8].$in[9].'-'.$in[3].$in[4].'-'.$in[0].$in[1]; ?> 

Метод 2 – регулярное выражение

 <?php echo ($output = preg_replace('!^([0-9]{2})/([0-9]{2})/([0-9]{4})$!',"$3-$2-$1",$input)); ?> 

Попробуй это :

 $dte = '28/03/2013'; $dt = new DateTime(); $date = $dt->createFromFormat('d/m/Y', $dte); echo $date->format('Ym-d'); 

Результат: 2013-03-28

 $date_array = explode("/",$your_date); // split the array $var_day = $date_array[0]; //day seqment $var_month = $date_array[1]; //month segment $var_year = $date_array[2]; //year segment echo $new_date_format = "$var_year-$var_day-$var_month"; // join them together 

Это будет работать