我需要在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
如何解决问题
答案 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中的/
日期。
答案 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是最终结果。