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


Convert dd/mm/yyyy to yyyy-mm-dd in php

我需要在php中转换日期格式,但我得到了错误

这是我的代码

 $test = new DateTime('23/09/2016');
   echo date_format($test, 'Y-m-d');

但作为,我遇到了错误

Message: DateTime::__construct(): Failed to parse time string (23/09/2016) at position 0 (2): Unexpected character 

如何解决问题

您并没有告诉DateTime您的字符串日期格式是什么。因此,它无法创建DateTime对象。

这应该有效:

$test = DateTime::createFromFormat('d/m/Y', '23/09/2016');
echo date_format($test, 'Y-m-d');

点击此处了解更多关于createFromFormat的信息。

请改用createFromFormat。像这样,

$date = DateTime::createFromFormat('d/m/Y', '23/09/2016');
echo date_format($date, 'Y-m-d');

它正在抛出异常,因为它无法解析包含/的字符串

http://php.net/manual/en/datetime.createfromformat.php

由于您的代码与Years and Day不匹配,您会出现错误。如果你在下面写代码,它就会工作。我只是在岁月之间交换。

 $test = new DateTime('2016/09/23');
 echo date_format($test, 'Y-m-d');

或者,您可以使用createFromFormat格式化第一个日期字符串,然后将其转换为所需的格式。

$input = "23/09/2016";
$arr = explode("/", $input);
#   mktime is a function to create timestamp
#   mktime (hour, min, sec, month, day, year)
$mktime = mktime(0,0,0,(int) $arr[1],(int)$arr[0],(int)$arr[2]);
$date1 = date ('d/m/Y', $mktime);
$date2 = date ('Y/m/d', $mktime);
echo "input: $input'ndate1: $date1'ndate2: $date2'n";

或者你可以试试这个,$date2是最终结果。