Hace varios días hice algo así, pero usando el mismo formato de Twitter:
Código PHP:
Ver original<?php
class RelativeTime extends DateTime{
public function getRelativeTimeFormat($dateTime = null)
{
? new DateTime($dateTime, $this->getTimezone())
: $this;
$secs = time() - $date->getTimestamp(); $mins = floor($secs / 60); $hours = floor($secs / 60 / 60);
$formats = array('hora', 'minuto', 'segundos'); $relativeFormat = $hours > 23
? $date->format('d M')
: ($hours > 0
? $hours . ' ' . $formats[0] . ($hours > 1 ? 's' : null)
: ($mins > 0
? $mins . ' ' . $formats[1] . ($mins > 1 ? 's' : null)
: $secs . ' ' . $formats[2]
)
);
return $relativeFormat;
}
}
$obj = new RelativeTime('2011-05-16 00:30:01', new DateTimeZone('America/Puerto_Rico'));
echo $obj->getRelativeTimeFormat(); // imprime algo como 24 minutos
echo $obj->getRelativeTimeFormat('2011-05-16 00:45:01'); // imprime algo como 9 minutos
echo $obj->getRelativeTimeFormat('2011-05-16 00:54:01'); // imprime algo como 1 minuto
echo $obj->getRelativeTimeFormat('2011-05-16 00:55:01'); // imprime algo como 12 segundos
echo $obj->getRelativeTimeFormat('2011-05-14 00:00:00'); // imprime 14 May