Формат даты dd/mm / yyyy на YYYY-mm-DD PHP [дубликат]
этот вопрос уже есть ответ здесь:
- преобразовать дату формата в другой в PHP 14 ответов
у меня есть форма, в которой дата вводится в формате UK, и мне нужно преобразовать ее в
yyyy-mm-dd
например, введенная дата:31/03/2013
который я хочу преобразовать в '2013-03-31'
на базе вставлять.
Я использую следующее, которое странно работает только иногда:
$dateInput = $mysqli->real_escape_string($_POST['date']);
$show_date = date('Y-m-d', strtotime($dateInput));
есть ли лучший способ сделать это?
7 ответов
вы можете использовать DateTime:: createFromFormat:
$show_date = DateTime::createFromFormat('d/m/Y', $dateInput)->format('Y-m-d');
попробовать его.
$dateInput = explode('/','31/03/2013');
$ukDate = $dateInput[2].'-'.$dateInput[1].'-'.$dateInput[0];
после чего странно работает, только иногда:
$show_date = date('Y-m-d', strtotime($dateInput));
это не другой более короткий способ сделать это.... и я через всю жизнь.. до сих пор не замечал никаких странностей.. проверьте, есть ли какие-то другие вещи, которые испортили
другой способ сделать это
$timestamp = strtotime(str_replace('/', '.', $dateInput));
$mysql_date = date('Y-m-d', $timestamp);
PHP 5.3 и до
использовать DateTime:: createFromFormat. Он позволяет указать точную маску-используя синтаксис date () - для анализа входящих строк.
PHP 5.2 и ниже
вам придется вручную проанализировать элементы (год, месяц, день, час, минута, секунда) с помощью substr() и передать результаты в mktime () это построит вам временную метку.
попробуйте это :
$dte = '28/03/2013';
$dt = new DateTime();
$date = $dt->createFromFormat('d/m/Y', $dte);
echo $date->format('Y-m-d');
выход: 2013-03-28
несколько альтернативных методов. Оба выходных 2013-03-31:
метод 1 - "Look ma, нет функций"
<?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})$!',"--",$input));
?>
$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
Это будет работать