如何从拿铁咖啡的当天(日期(' z'))中减去天数(时间戳|日期' z')?我尝试使用var但不喜欢格式化(z)。
答案 0 :(得分:1)
与函数调用不同,Latte过滤器不能应用于表达式的任何部分 - 它们只是变量打印宏的可选功能。
{expression_to_be_printed|filter1|filter2|filter3}
date
过滤器主要只是calls format
method,因此您可以直接使用它:
{(new DateTime())->format('z') - $timestamp->format('z')}
但是,如果$timestamp
位于不同的年份,则无效。
要解决此问题,您可以使用DateTime
的{{3}}方法。该方法返回的DateInterval
可以使用diff
方法进行格式化,该方法通过%a
格式化字符串提供天数差异。
{$timestamp->diff(new DateTime())->format('%a')}
幸运的是,date
过滤器还允许格式化间隔。
{$timestamp->diff(new DateTime())|date:'%a'}
不可否认,这看起来很丑陋。更好的方法是定义自定义过滤器,以便只使用{$post->timestamp|daysAgo}
。有关创建自己的过滤器的信息,请参阅format
。