İstediğinize benzer bi iş yapan bi fonksiyon yazmıştım daha önce. Önceki tarihi veriyorsunuz, şu andan itibaren geçen zamanı hesaplıyor. İsteğinize göre şekillendirmeniz mümkün.

function seker_zaman($unix)
{
	$diff = time() - $unix;

	$times = array(
		array(3600, 60, 'dakika'),
		array(86400, 3600, 'saat'),
		array(604800, 86400, 'gün', 'Dün'), // sonuç "1 gün" ise, onun yerine "Dün" yazar
		array(2592000, 604800, 'hafta', 'Geçen hafta'), // sonuç "1 hafta" ise, onun yerine "Geçen hafta" yazar
		array(31104000, 2592000, 'ay', 'Geçen ay') // sonuç "1 ay" ise, onun yerine "Geçen ay" yazar
	);

	if ($diff < 60)
		return '1 dakikadan kısa bir süre önce';

	foreach ($times as $time) {
		if ($diff < $time[0])
			return (isset($time[3]) ? $time[3] : floor($diff / $time[1]) . ' ' . $time[2] . ' önce');
	}

	return seker_tarih($unix);
}

function seker_tarih($unix)
{
	return strftime('%e %B %Y %A, %H:%I', $unix);
}