Подтвердить что ты не робот

Формат даты 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('Y-m-d', strtotime($dateInput));

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

4b9b3361

Ответ 1

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

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

Ответ 2

попробуйте.

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

Ответ 3

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

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

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

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

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

Ответ 4

PHP 5.3 и выше

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

PHP 5.2 и ниже

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

Ответ 5

Пара альтернативных методов. Оба выхода 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));
?>

Ответ 6

Попробуйте следующее:

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

Выход: 2013-03-28

Ответ 7

$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

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