Php 从原则2中的datetime对象获取作为字符串的日期

Php 从原则2中的datetime对象获取作为字符串的日期,php,datetime,doctrine,doctrine-orm,Php,Datetime,Doctrine,Doctrine Orm,在我的一个实体中,我有一个名为insert\u date的受保护属性,它是一个日期时间 当我随后提取数据时,我不会将日期作为字符串获取,而是获取一个对象。我的var转储: <pre class='xdebug-var-dump' dir='ltr'> <b>object</b>(<i>DateTime</i>)[<i>1560</i>] <i>public</i> 'date' <f

在我的一个实体中,我有一个名为
insert\u date
的受保护属性,它是一个日期时间

当我随后提取数据时,我不会将日期作为字符串获取,而是获取一个对象。我的var转储:

<pre class='xdebug-var-dump' dir='ltr'> <b>object</b>(<i>DateTime</i>)[<i>1560</i>] <i>public</i> 'date' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'2011-08-26 12:40:29'</font> <i>(length=19)</i> <i>public</i> 'timezone_type' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>3</font> <i>public</i> 'timezone' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'Europe/London'</font> <i>(length=13)</i> </pre><pre class='xdebug-var-dump' dir='ltr'> <b>object</b>(<i>DateTime</i>)[<i>1571</i>] <i>public</i> 'date' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'2011-08-26 12:40:29'</font> <i>(length=19)</i> <i>public</i> 'timezone_type' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>3</font> <i>public</i> 'timezone' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'Europe/London'</font> <i>(length=13)</i>
但它不提取。。。如何从该对象获取日期属性?即使是
$insert\u date->date也不起作用。

使用

if($dateObj)
{
    $dateObj->format('Y-m-d H:i:s');
}

要确保$dateObj是实际的datetime obj,请使用:

if($dateObj instanceof \DateTime){
    $dateObj->format('Y-m-d H:i:s');
}

使用“instanceof”检查对象是否具有所需的format函数,因此,如果没有,则不会抛出错误。

致命错误:对非对象调用成员函数format()?数据库中的某些记录可能具有
NULL
。格式化前检查
$dateObj
是否不为空:
如果(!empty($dateObj))$dateObj->format(…)
if($dateObj instanceof \DateTime){
    $dateObj->format('Y-m-d H:i:s');
}