Unknown twig time_diff filter error
The time_diff filter is not built into Drupal 9 Twig — here's how to add it with a custom extension.
class TimeDiffExtension extends AbstractExtension {
public function getFilters() {
return [new TwigFilter('time_diff', [$this, 'calculateTimeDiff'])];
}
public function calculateTimeDiff($timestamp) {
$diff = $this->time->getCurrentTime() - $timestamp;
if ($diff < 60) return t('@count seconds ago', ['@count' => $diff]);
if ($diff < 3600) return t('@count minutes ago', ['@count' => floor($diff / 60)]);
if ($diff < 86400) return t('@count hours ago', ['@count' => floor($diff / 3600)]);
return t('@count days ago', ['@count' => floor($diff / 86400)]);
}
}
# services.yml
services:
custom_twig_filters.time_diff_extension:
class: Drupal\custom_twig_filters\TwigExtension\TimeDiffExtension
arguments: ['@datetime.time']
tags: [{ name: twig.extension }]