Ciao, avevo bisogno di una funzione che mi dicesse quanto tempo è passato (in giorni, ore, minuti e secondi) da una data, insomma che calcolasse la differenza tra due date.

Codice PHP:
function difference($data) {
  
$difference time() - date($data);

  
$days floor($difference 86400);
  
$difference -= 86400 floor($difference 86400);
  if (
$days ==1) { echo $days ' giorno, '; } elseif($days 1) { echo $days " giorni, "; }
  
  
$hours floor($difference 3600);
  
$difference -= 3600 floor($difference 3600);
  if (
$hours == 1) { echo $hours " ora, ";} elseif($hours 1) { echo $hours " ore, "; }
  
  
$minutes floor($difference 60);
  
$difference -= 60 floor($difference 60);
  if (
$minutes == 1) {echo $minutes " minuto "; } elseif ($minutes 1) {echo $minutes " minuti "; }
  echo 
"fa.";

La funzione accetta date in formato UNIX timestamp.

Per sapere la differenza tra adesso e $data, basta dare:
Codice PHP:
mktime($data); //converte $data in un timestamp
echo difference($data); 
Esempi di output:

1 ora, 54 minuti fa.
6 ore, 59 minuti fa.
1 giorno, 20 minuti fa.
2 giorni, 9 ore, 1 minuto fa.
57 giorni, 1 ora, 11 minuti fa.
500 giorni, 13 ore, 59 minuti fa.
Le ore, i minuti e i secondi vengono divisi (come si vede dall'esempio), ma i giorni crescono indefinitamente con l'allontanarsi tra $data e adesso. Questo perchè non volevo impelagarmi con anni bisestili, mesi di 28-29-30-31 giorni, ecc.

Comunque spero che questo possa tornare utile a qualcuno.
Ciao