2010-09-01

Función para determinar el tiempo transcurrido en PHP

Esta función muestra el tiempo transcurrido desde una fecha dada. La idea es mostrar el tiempo en un formato más amigable para el lector. En vez de mostrar una fecha como "09/02/2010", se mostraría un texto indicando "Hace 1 día". Este tipo de visualización se empezó a popularizar gracias a GMail. La función aquí mostrada es una simple adaptación a las peculiaridades del castellano de la función nicetime que se encuentra en los comentarios de php.net.
  1. function tiempo_transcurrido($fecha) {  
  2.     if(empty($fecha)) {  
  3.           return "No hay fecha";  
  4.     }  
  5.      
  6.     $intervalos = array("segundo", "minuto", "hora", "día", "semana", "mes", "año");  
  7.     $duraciones = array("60","60","24","7","4.35","12");  
  8.      
  9.     $ahora = time();  
  10.     $Fecha_Unix = strtotime($fecha);  
  11.       
  12.     if(empty($Fecha_Unix)) {     
  13.           return "Fecha incorracta";  
  14.     }  
  15.     if($ahora > $Fecha_Unix) {     
  16.           $diferencia     =$ahora - $Fecha_Unix;  
  17.           $tiempo         = "Hace";  
  18.     } else {  
  19.           $diferencia     = $Fecha_Unix -$ahora;  
  20.           $tiempo         = "Dentro de";  
  21.     }  
  22.     for($j = 0; $diferencia >= $duraciones[$j] && $j < count($duraciones)-1; $j++) {  
  23.       $diferencia /= $duraciones[$j];  
  24.     }  
  25.      
  26.     $diferencia = round($diferencia);  
  27.       
  28.     if($diferencia != 1) {  
  29.         $intervalos[5].="e"; //MESES  
  30.         $intervalos[$j]."s";  
  31.     }  
  32.      
  33.     return "$tiempo $diferencia $intervalos[$j]";  
  34. }  
  35. // Ejemplos de uso  
  36. // fecha en formato yyyy-mm-dd  
  37. // echo tiempo_transcurrido('2010/02/05');  
  38. // fecha y hora  
  39. // echo tiempo_transcurrido('2010/02/10 08:30:00'); 

No hay comentarios: