,这就是发生的事情:
var_dump(date_create_from_format('d.m.Y', '29-04-2018'));
或以下:
var_dump(date_create_from_format('d-m-Y', '29.04.2018'));
和
var_dump(date_get_last_errors());
输出:
array (size=4)
'warning_count' => int 0
'warnings' =>
array (size=0)
empty
'error_count' => int 4
'errors' =>
array (size=2)
2 => string 'Unexpected data found.' (length=22)
5 => string 'Unexpected data found.' (length=22)
但是,当格式字符串和日期字符串具有相同的分离器(dash或dot(时,它起作用。我在做什么错?
upd:此代码来自WordPress的Chauffeur预订系统插件。它旨在将所有日期设置为标准格式,以便以后进行比较。因此,它从插件的设置以及在前端中选择或键入的日期中获取标准格式。它将此日期转换为此标准格式,以将其与插件中设置的其他日期进行比较。我希望这是有道理的。
在PHP 5.6和7.0上测试。
正如@machavity所说,您正在滥用date_create_from_format
功能,您必须通过相同的格式。
如果要将格式更改为其他东西,请尝试以下操作:
var_dump(date('d.m.Y', time('29-04-2018')));
var_dump(date('d-m-Y', time('29.04.2018')));
注意:另一方面,这将返回所需格式的字符串,date_create_from_format
返回DateTime
对象。我相信这就是您想做的。