Me encanta la función relativeTime por xdebug. El problema es que necesitaba que tuviera cierta granularidad.
En otras palabras, pare en segundos o minutos si así lo decidiera. Así que ahora,
echo fTime(strtotime('-23 hours 5 minutes 55 seconds'),0);
mostraría,
23 horas, 5 minutos hace
En lugar de
23 horas, 5 minutos, 55 hace segundos
También quería que NO fuera menor en la matriz si alcanzaba una de las cantidades de tiempo más altas. Entonces, si muestra años, solo quiero mostrar años y meses. Así que ahora,
echo fTime(strtotime('-1 year 2 months 3 weeks 4 days 16 hours 15 minutes 22 seconds'),0);
mostraría
1 año, 2 meses
En lugar de
1 año, 2 meses, 3 semanas , 4 días, 16 horas, 15 minutos, 22 segundos hace
El siguiente cambio de código hizo lo que necesitaba. Los apoyos van a xdebug primero, por supuesto. Esperemos que alguien más podría encontrar útil:
function fTime($time, $gran=-1) {
$d[0] = array(1,"second");
$d[1] = array(60,"minute");
$d[2] = array(3600,"hour");
$d[3] = array(86400,"day");
$d[4] = array(604800,"week");
$d[5] = array(2592000,"month");
$d[6] = array(31104000,"year");
$w = array();
$return = "";
$now = time();
$diff = ($now-$time);
$secondsLeft = $diff;
$stopat = 0;
for($i=6;$i>$gran;$i--)
{
$w[$i] = intval($secondsLeft/$d[$i][0]);
$secondsLeft -= ($w[$i]*$d[$i][0]);
if($w[$i]!=0)
{
$return.= abs($w[$i]) . " " . $d[$i][1] . (($w[$i]>1)?'s':'') ." ";
switch ($i) {
case 6: // shows years and months
if ($stopat==0) { $stopat=5; }
break;
case 5: // shows months and weeks
if ($stopat==0) { $stopat=4; }
break;
case 4: // shows weeks and days
if ($stopat==0) { $stopat=3; }
break;
case 3: // shows days and hours
if ($stopat==0) { $stopat=2; }
break;
case 2: // shows hours and minutes
if ($stopat==0) { $stopat=1; }
break;
case 1: // shows minutes and seconds if granularity is not set higher
break;
}
if ($i===$stopat) { break 0; }
}
}
$return .= ($diff>0)?"ago":"left";
return $return;
}
Marcus
Tal vez esto puede ayudar a: http: // stackoverflow. com/questions/2643113/convert-2010-04-16-163000-to-tomorrow-afternoon/2643137 –
posible duplicado de [¿Cómo puedo calcular relati ve time?] (http://stackoverflow.com/questions/11/how-do-i-calculate-relative-time) – hakre