日期格式转换导致'在非对象错误'时调用成员函数format()


Date format conversion results in 'Call to a member function format() on a non-object error'

我已经尝试了SO上这个常见问题的所有答案,我仍然不能得到这个工作。下面是我的代码:

$datetime = strip_tags($object->field_field_date[0]['rendered']['#markup']);
$dt = DateTime::createFromFormat('l, F d, Y - H:s', $datetime);
$date = $dt->format('l, M'. jS 'a't g:s a'); // ERROR

:

var_dump($datetime);
var_dump($dt);

返回:

string(33) "Friday, September 4, 2015 - 18:00"
object(DateTime)#501 (3) { ["date"]=>string(26) "2015-09-04 18:00:00.000000"
      ["timezone_type"]=>
      int(3)
      ["timezone"]=>
      string(19) "America/Los_Angeles"
    }

我假设$datetime变量有问题,因为如果我使用以下命令,我不再得到错误。

$datetime = strip_tags('<b>Friday, September 4, 2015 - 18:00</b>');

你知道这里出了什么问题吗?

也许更多的错误处理会有所帮助…

$datetime = strip_tags($object->field_field_date[0]['rendered']['#markup']);
$dt = DateTime::createFromFormat('l, F d, Y - H:s', $datetime);
if ( !is_object($dt) ) {
    trigger_error( sprintf('failed to create datetime from [%s]', $object->field_field_date[0]['rendered']['#markup']) );
}
else {
    $date = $dt->format('l, M'. jS 'a't g:s a');