Salve,
ho creato questa funzione
codice:
<?php
$date = osc_item_field("dt_pub_date");
$monthago = 2592000;
$twoweekago = 1209600;
$weekago = 604800;
$yesterday = 172800;
$today = 86400;
$time = strtotime($date);
$time = time()-$time;
if ($today > $time) {
$time_temp = explode (',', osc_format_date(osc_item_pub_date()));
echo "Oggi alle" .$time_temp[1]; }
else if ($yesterday > $time) {
$time_temp = explode (',', osc_format_date(osc_item_pub_date()));
echo "Ieri alle".$time_temp[1];}
else if ($weekago > $time) {echo 'Questa settimana';}
else if($time > $weekago && $twoweekago>$time) {echo 'Una settimana fa';}
else if($time > $twoweekago && $monthago>$time) {echo 'Due settimane fa';}
else if($monthago > $time && $monthago > $twoweekago) {echo 'Un mese fa'.$time;}
else if($time > $monthago) {echo 'Oltre un mese';}
else {echo osc_format_date(osc_item_pub_date());}
?>
Che molto intuitivamente prendo la data di pubblicazione di un annuncio, sottrae al tempo corrente(funzione time()) la data dell'annuncio e in base al risultato stampa la stringa voluta..
Il problema è che sbaglia clamorosamente, come se fosse impostato un fuso orario sbagliato.
Per esempio un annuncio pubblicato ieri mi segna come se fosse di oggi, facendogli stampare il valore di $time effettivamente è minore di 86400 e quindi non viene attivato l'else if di "yesterday"... idee consigli?
Mi va bene anche una versione alternativa per ottenere ciò 
Grazie in anticipo^^