2011-08-26 38 views
24

在我的一個實體中,我有一個名爲insert_date的受保護屬性,它是一個日期時間。從doctrine 2中的datetime對象獲取日期

當我提取數據後,我沒有得到日期作爲一個字符串,我得到一個對象。我的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> 

我想:

foreach($dateObj as $date) { 

} 

但不提取...我怎樣才能從這個對象的日期屬性?即使$insert_date->date不起作用。

回答

50

使用

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

致命錯誤:調用非對象的成員函數格式()? –

+4

你的一些記錄可能在數據庫中有NULL。在格式化之前檢查'$ dateObj'是否爲空:'if(!empty($ dateObj))$ dateObj-> format(...)'。 – J0HN

+0

約翰是正確的,更新的代碼 –

13

要確保你的$選項dateObj是一個實際的日期時間OBJ使用:

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

使用「的instanceof」檢查該對象將具有所需的格式功能,因此不會丟錯誤,如果沒有。