我想创建自定义过滤器来计算两个日期之间的差异。 我跟随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