Provides helpers for time manipulation
This bundle does one simple job: takes dates and gives you friendly "2 hours ago"-type messages. Woh!
Last edited {{ post.updatedAt|ago }}
Want to see it used in a screencast 🎥? Check out SymfonyCasts: https://symfonycasts.com/screencast/symfony-doctrine/ago
The date formatted can be translated into any language, and many are supported out of the box.
Use Composer to install the library:
composer require knplabs/knp-time-bundle
Woo! You did it! Assuming your project uses Symfony Flex, the bundle should be configured and ready to go. If not, you can enable
Knp\Bundle\TimeBundle\KnpTimeBundlemanually.
In Twig:
{{ someDateTimeVariable|ago }}... or use the equivalent function: {{ time_diff(someDateTimeVariable) }}
Note: the "ago" filter works fine for dates in the future, too.
You can also "ago" dates inside PHP by autowiring the
Knp\Bundle\TimeBundle\DateTimeFormatterservice:
use Knp\Bundle\TimeBundle\DateTimeFormatter; // ...public function yourAction(DateTimeFormatter $dateTimeFormatter) { $someDate = new \DateTime('2017-02-11'); //or $entity->publishedDate() $now = new \DateTime();
$agoTime = $dateTimeFormatter->formatDiff($someDate, $now); return $this->json([ ... 'published_at' => $agoTime ... ]);
}
The bundle will automatically use the current locale when translating the "ago" messages. However, you can override the locale:
{{ someDateTimeVariable|ago(locale='es') }}
If you want to run tests, please check that you have installed dev dependencies.
./vendor/bin/simple-phpunit
Anyone can contribute to this repository (and it's warmly welcomed!). The following people maintain and can merge into this library: