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

时间:2013-05-30 05:35:22

标签: php date date-format

我尝试使用以下代码将dateformat从dmy更改为ymd,但在使用时我的日期错误。

我的代码

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

插入日期

30-05-2013 and  31-05-2013

它返回的日期是

2035-11-03 and 2036-11-02 
你可以帮我找一下这里的问题并解决它吗

谢谢。

5 个答案:

答案 0 :(得分:3)

您可以使用DateTime

$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');

答案 1 :(得分:3)

尝试拆分,如

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

或者即使像

也可以使用爆炸
$a = explode('-',$_POST["txtstartdates"]);
$my_new_date = $a[2].'-'.$a[1].'-'.$a[0];

此处strtotime不适用于格式dd-mm-yyyy

答案 2 :(得分:1)

您不能使用DateTime对象将日期转换为您想要的格式吗?

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

答案 3 :(得分:0)

您的代码似乎是正确的,我不知道为什么它不适合您可以尝试下面 我仅从''

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

答案 4 :(得分:0)

您可以使用单行作为:

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