2

我尝试使用以下代码将日期格式从 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 

你能帮我找出这里的问题并解决吗

谢谢你。

4

5 回答 5

5

尝试拆分_

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

或者你甚至可以使用爆炸

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

这里 strtotime 不适用于 dd-mm-yyyy 格式

于 2013-05-30T05:39:50.683 回答
4

您可能会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');
于 2013-05-30T05:38:42.923 回答
1

不能用 DateTime 对象把日期转换成你想要的格式吗?

$DateTime = new DateTime($_POST['FIELD']);
echo $DateTime->format('Y-m-d'); 
于 2013-05-30T05:38:36.993 回答
1

您的代码似乎正确,我不知道为什么它对您不起作用您可以在下面尝试吗?我只制作了 ''from""

$sdate11=date('Y-m-d', strtotime($_POST['txtstartdates']));
$sdate111=date('Y-m-d', strtotime($_POST['txtenddates']));
于 2013-05-30T05:51:08.837 回答
0

您可以使用单行来执行此操作:

$show_date = DateTime::createFromFormat('d-m-Y', $dateInput)->format('Y-m-d');
于 2016-12-11T19:41:20.030 回答