在php中将dd-mm-yyyy转换为yyyy-mm-dd

I tried the following code to change the dateformat from dmy to ymd, but when using i got wrong dates.

My code

$sdate11=date("Y-m-d", strtotime($_POST["txtstartdates"]) );
$sdate111=date("Y-m-d", strtotime($_POST["txtenddates"]) );

dates inserted were

30-05-2013 and  31-05-2013

the date it returned was

2035-11-03 and 2036-11-02 

could you please help me to find what was the problem here and solve it

Thank you.

Try with split like

$a = split('-',$_POST["txtstartdates"]);

or you can use explode even like

$a = explode('-',$_POST["txtstartdates"]);
$my_new_date = $a[2].'-'.$a[1].'-'.$a[0];

Here strtotime will not work for the format dd-mm-yyyy

Can't you use the DateTime object to convert the date into the format you want?

$DateTime = new DateTime($_POST['FIELD']);
echo $DateTime->format('Y-m-d'); 

You might use DateTime for that:

$date = DateTime::createFromFormat('d-m-Y', $_POST['txtstartdates']);
echo $date->format('Y-m-d');

$date = DateTime::createFromFormat('d-m-Y', $_POST['txtenddates']);
echo $date->format('Y-m-d');

Your code seems correct , I dont know why its not working for you Can you try below I have made the '' from "" only

$sdate11=date('Y-m-d', strtotime($_POST['txtstartdates']));
$sdate111=date('Y-m-d', strtotime($_POST['txtenddates']));

You can do it using single line as:

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