All pages

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 }]
Unknown twig time_diff filter error | condurachi.ro