当日期和格式具有不同的分离器时,PHP失败



,这就是发生的事情:

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对象。我相信这就是您想做的。

最新更新