Esto se hace mejor en el lado del cliente en la capa de presentación. Aquí hay una solución JS:
Timeago es un complemento de jQuery que facilita la actualización automática de marcas de tiempo difusas (por ejemplo, "hace 4 minutos" o "hace aproximadamente 1 día").
Timeago convertirá todos los elementos abbr con una class
de timeago y una marca de tiempo ISO 8601 en el title
:
<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr>
en algo como esto:
<abbr class="timeago" title="July 17, 2008">about a year ago</abbr>
Para convertir la fecha al formato ISO 8601, puede hacer algo como esto:
<?= date("c", $post_date) ?>
Ejemplos: