2015-11-20 41 views
-2

我試圖將日期格式更改爲Y-m-d H:i:s。這就是我試圖做Symfony2原則:更改日期時間格式

CollectionController

 date_default_timezone_set('Europe/London'); 
    $dateAdded = (new \DateTime())->format("Y-m-d H:i:s"); 
    $collection->setDateAdded($dateAdded); 

集合類

/** 
* @ORM\Column(type="datetime", name="date_added") 
*/ 
private $date_added; 

public function setDateAdded(DateTime $date_added) 
    { 
     $this->date_added = $date_added; 
     return $this; 
    }  

但我有這個錯誤

參數1傳遞給CollectionBundle \實體\收藏:: setDateAdded()必須是DateTime的一個實例,string給出

回答

0

它非常簡單。如果你讓一個format得到一個字符串作爲返回,並且你沒有和DateTime對象。

因此,在您的實體中設置DateTime對象的格式,或者刪除實體中DateTime的Type提示。

https://secure.php.net/manual/en/datetime.format.php

在這裏你可以看到你得到一個格式化的日期string

public function setDateAdded(DateTime $date_added) { 
    $this->date_added = new \DateTime(); 
    return $this; 
} 

就像這樣。

對不起我的錯。如果您將字段聲明爲DateTime,則可以直接設置DateTime對象。如果你從數據庫中讀取它,你可以格式化它。

+0

謝謝,但現在我有這個錯誤:錯誤:調用非對象的成員函數格式() – user3793667

+0

如果添加了我的答案。你可以直接將它設置到你的數據庫並且如果你閱讀它就格式化它。 – Stony

1

你的方法的簽名是:

public function setDateAdded(DateTime $date_added) 
{ 
    $this->date_added = $date_added; 
    return $this; 
}  

你試圖通過字符串(格式返回字符串):

$dateAdded = (new \DateTime())->format("Y-m-d H:i:s"); 
$collection->setDateAdded($dateAdded); 

傳遞對象的引用:

$dateAdded = new \DateTime('NOW'); 
$collection->setDateAdded($dateAdded); 
+0

這並沒有幫助我改變格式。 'y-m -d'格式 – user3793667

+0

運行php app/console doctrine:schema:update來檢查列類型是'datetime'還是'date' –

0

您應該將日期存儲爲日期時間對象,而不是字符串。格式化他們是視圖層的負有責任,不要改變什麼,只是傳遞DateTime對象到setDateAdded方法,如:

$collection->setDateAdded(new \DateTime()); 

和樹枝文件:

{{ object.dateAdded|date('Y-m-d H:i:s') }}