Datetime 嫩枝日期差

Datetime 嫩枝日期差,datetime,twig,datediff,Datetime,Twig,Datediff,我有一个实体,有开始日期和结束日期 通过使用细枝可以得到它们之间的时间差吗?没有内置的函数可以做到这一点,但是你可以自己轻松做到,这很简单 快速简便的方法是使用twig的简单函数类: $function=new Twig\u SimpleFunction('date\u difference',function($start,$end){ //…计算差异并返回它 }); //假设$twig是twig_环境的一个实例 $twig->addFunction($function); 可重用的方法是创

我有一个实体,有开始日期和结束日期


通过使用细枝可以得到它们之间的时间差吗?

没有内置的函数可以做到这一点,但是你可以自己轻松做到,这很简单

快速简便的方法是使用twig的简单函数类:

$function=new Twig\u SimpleFunction('date\u difference',function($start,$end){
//…计算差异并返回它
});
//假设$twig是twig_环境的一个实例
$twig->addFunction($function);

可重用的方法是创建一个细枝扩展(记录在同一链接上)。这仍然很容易。

因为PHP5.3还有另一个不需要编写扩展的选项

此示例显示如何计算复数天

{# endDate and startDate are strings or DateTime objects #}
{% set difference = date(endDate).diff(date(startDate)) %}
{% set leftDays = difference.days %}
{% if leftDays == 1 %}
  1 day
{% else %}
  {{ leftDays }} days
{% endif %}
说明:

PHP5.3
DateTime
对象有一个方法,该方法返回的对象的结果在
endDate
beginDate
小枝

Twig函数总是返回一个
DateTime
对象,因此我们可以调用
diff
方法

最后,我们可以访问
DateInterval
对象的属性,或者使用Twig
date
过滤器对其进行格式化

注意:如果变量已经是
DateTime
对象,则不需要使用
date
函数包装
endDate
startDate


注2:
DateTime
在这里用作
DateTime接口的同义词

还请注意,Sensio实验室提供了一个时间差过滤器

然后您可以这样使用它:
{{entity.ending_date | time_diff(entity.start_date)}


请注意,对于Symfony 5,Twig 3不支持此插件:

,我建议使用

它提供细枝功能
| ago


要安装:
composer require knplabs/knp time bundle

这确实像做梦一样工作,但是如果日期之间的差异将超过一个月,请使用.days而不是.d,.d只返回天数部分,即如果差异为1个月,则为1天,.d将为1天,但.days将为32天(假设为31天)<代码>{%set leftDays=difference.days%}以获取生日{{date().diff(date(item.birth)).y},但开始日期和结束日期的任一位置都将产生一天。你怎么确定是剩下一天(+1),还是超过一天(-1)??太棒了。你是树枝大师