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

时间:2016-07-18 08:26:34

标签: php date

我需要在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 

如何解决问题

4 个答案:

答案 0 :(得分:0)

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

这应该有效:

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

详细了解createFromFormat here

答案 1 :(得分:0)

请改用createFromFormat。像这样,

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

它抛出异常,因为它无法解析String中的/日期。

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

答案 2 :(得分:0)

您收到错误是因为您的代码与年和日不匹配。 如果您编写下面的代码,它将起作用。我只是在年和日之间交换。

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

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

答案 3 :(得分:0)

$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是最终结果。