我需要在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是最终结果。