Nette 如何从当前日期中减去时间戳

Nette how to subtract timestamp from current date

如何在拿铁咖啡中从当天(日期('z'))中减去天数(时间戳|日期'z')?我尝试使用 var 但不喜欢格式 (z)。

Latte 过滤器与函数调用不同,它不能应用于表达式的任何部分 – 它们只是变量打印宏的可选功能。

{expression_to_be_printed|filter1|filter2|filter3}

date 过滤器主要是 calls format method 所以你可以直接使用它:

{(new DateTime())->format('z') - $timestamp->format('z')}

但是,如果 $timestamp 属于不同的年份,这将不起作用。 要解决此问题,您可以使用 DateTimediff method. DateInterval, returned by the method, can then be formatted using format 方法,该方法通过 %a 格式化字符串提供天数差异。

{$timestamp->diff(new DateTime())->format('%a')}

幸运的是,date 过滤器还允许格式化间隔。

{$timestamp->diff(new DateTime())|date:'%a'}

不可否认,这看起来有点丑。更好的方法是定义一个自定义过滤器,这样您就可以只使用 {$post->timestamp|daysAgo}。请参阅 Latte docs 关于创建您自己的过滤器。