calculando e mostrando uma data como ‘segundos atrás’, ‘minutos atrás’, ‘horas atrás’, etc.

Eu tenho uma pequena coisa de tipo de blog personalizada e quero exibir a data postada ao lado de comentários.

Gostaria de fazê-lo no formato de:

publicado 23 segundos atrás
publicado 43 minutos atrás
publicado há 1h
publicado há 1 dia
publicado há 2 semanas
… provavelmente não vai ter muito mais tempo do que isso porque os artigos com mais de um mês não são exibidos.

Posso armazenar a data real no formato data ou hora em MySQL …

Alguém sabe de uma function que existe para o PHP, que eu poderia usar para fazer isso? Na verdade, na verdade não encontrei nada que seja adequado.

Você pode usar a seguinte function e chamá-la como format_interval(time() - $saved_timestamp) , onde $saved_timestamp é o timestamp do “evento” que você está interessado.

 function format_interval($interval, $granularity = 2) { $units = array('1 year|@count years' => 31536000, '1 week|@count weeks' => 604800, '1 day|@count days' => 86400, '1 hour|@count hours' => 3600, '1 min|@count min' => 60, '1 sec|@count sec' => 1); $output = ''; foreach ($units as $key => $value) { $key = explode('|', $key); if ($interval >= $value) { $floor = floor($interval / $value); $output .= ($output ? ' ' : '') . ($floor == 1 ? $key[0] : str_replace('@count', $floor, $key[1])); $interval %= $value; $granularity--; } if ($granularity == 0) { break; } } return $output ? $output : '0 sec'; } 

Tanto quanto eu sei, não há nenhuma function incorporada no PHP para realizar isso, mas parece haver funções já escritas para esse propósito.

O único aqui parece ser capaz de fazer o que você precisa. (você pode precisar apertá-lo um pouco)