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