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

时间:2015-08-27 00:15:45

标签: php datetime string-formatting

我已经在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>');

任何想法在这里出了什么问题?

1 个答案:

答案 0 :(得分:0)

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

$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');