Isso é feito melhor no lado do cliente na camada de apresentação. Aqui está uma solução JS:
Timeago é um plugin jQuery que facilita o suporte à atualização automática de timestamps difusos (por exemplo, "4 minutos atrás" ou "cerca de 1 dia atrás").
Timeago irá transformar todos os elementos abbr com uma
class
de timeago e um carimbo de data/hora ISO 8601 no title
:<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr>
em algo assim:
<abbr class="timeago" title="July 17, 2008">about a year ago</abbr>
Para converter a data no formato ISO 8601, você pode fazer algo assim:
<?= date("c", $post_date) ?>
Exemplos: