Se preferite leggere sul vostro sito le date intelligenti come “1 ora fa” o “6 mesi fa” questa semplice e veloce funzione in PHP permetterà di mostrare la differenza di tempo trascorso sulla base di un valore di timestamp dato.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
/* Simple PHP Smart Date Function by Zen (http://zenverse.net) */ function smartdate($timestamp) { $diff = time() - $timestamp; if ($diff <= 0) { return 'Now'; } else if ($diff < 60) { return grammar_date(floor($diff), ' second(s) ago'); } else if ($diff < 60*60) { return grammar_date(floor($diff/60), ' minute(s) ago'); } else if ($diff < 60*60*24) { return grammar_date(floor($diff/(60*60)), ' hour(s) ago'); } else if ($diff < 60*60*24*30) { return grammar_date(floor($diff/(60*60*24)), ' day(s) ago'); } else if ($diff < 60*60*24*30*12) { return grammar_date(floor($diff/(60*60*24*30)), ' month(s) ago'); } else { return grammar_date(floor($diff/(60*60*24*30*12)), ' year(s) ago'); } } function grammar_date($val, $sentence) { if ($val > 1) { return $val.str_replace('(s)', 's', $sentence); } else { return $val.str_replace('(s)', '', $sentence); } } |
Fondamentalmente sono state definite 2 funzioni:
Smartdate – calcola la differenza tra il timestamp dato ed la data corrente, quindi restituisce il risultato corretto.
grammar_date – modifica il risultato restituendolo al plurale o al singolare.
Utilizzo
1 2 3 4 5 6 |
<?php //example 1 echo smartdate($yourtimestamp); //example 2 echo 'Posted on '.smartdate($yourtimestamp); ?> |
Per impostazione predefinita, questa funzione restituisce il valore floor (), vale a dire: ad esempio invece di tornare “1,7 anni fa”, restituisce “1 anno fa”. In ogni caso, la funzione può essere facilmente modificata per soddisfare proprie esigenze specifiche.
Il modo più comune per consentire all’utente di visualizzare comunque la data completa è quello di aggiungere un attributo “title” con data completa appunto impostata come valore dell’attributo. Così, al passaggio del mouse sulla data intelligente, l’utente potrà vedere anche la data completa nel tooltip che si visualizzerà in automatico.
1 2 3 4 |
<?php //from example 2 above echo 'Posted on <span title="' . $originalfulldate . '">' . smartdate($yourtimestamp) . '</span>'; ?> |