Il est préférable de le faire côté client dans la couche de présentation. Voici une solution JS :
Timeago est un plugin jQuery qui facilite la prise en charge de la mise à jour automatique des horodatages flous (par exemple, "il y a 4 minutes" ou "il y a environ 1 jour").
Timeago transformera tous les éléments abbr avec une class
de timeago et un horodatage ISO 8601 dans le title
:
<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr>
dans quelque chose comme ça :
<abbr class="timeago" title="July 17, 2008">about a year ago</abbr>
Pour convertir la date au format ISO 8601, vous pouvez faire quelque chose comme ceci :
<?= date("c", $post_date) ?>
Exemples :