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^^