我想創建自定義過濾器來計算兩個日期之間的差異。 我跟隨doc和創建過濾器來源:Symfony 2自定義過濾器
public function getFilters()
{
return array(
new \Twig_SimpleFilter('auctionLenght', array($this, 'auctionLenght')),
);
}
public function auctionLenght($creDate,$expDate)
{
$datetime1 = new \DateTime($creDate);
$datetime2 = new \DateTime($expDate);
$interval = $datetime1->diff($datetime2);
$data = date('Y-m-D', $interval);
return $data;
}
public function getName()
{
return 'eforma_extension';
}
現在我想在模板中使用它:
{{entity.creDate |auctionLenght(entity.expDate)}}
,但我得到錯誤的所有時間:
異常被(「DateTime :: __ construct()期望參數1是字符串,給定對象」)
我試圖在公共函數auctionLenght(\ DateTime $ creDate,\ DateTime $ expDate)中傳遞\ DateTime類型提示,但它不起作用。我該如何修復?過濾器註冊正確,因爲簡單的添加到字符串過濾器運行良好
謝謝回答。那麼我把我的數據從實體。 entity.creDate是Doctrine DateTime對象。這有些改變嗎?我嘗試你的解決方案並重播。 – user2217288 2014-09-29 06:00:26
它的一個簡單的行如果數據被拉爲主義的數據。返回$ creDate-> diff($ expDate) - > format('%a days');感謝您的幫助 – user2217288 2014-09-29 17:39:28
@ user2217288 _ShonM_已經回答了您的問題,Doctrine寫作日期時間對象,並將其作爲日期時間對象讀取,如果您將其類型設置爲日期時間,那就是爲什麼您不需要格式化,將它們傳遞給DateTime對象,就可以使用它們直接.. +1給他從我的回答.. – xurshid29 2014-09-29 17:56:36