Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/02/2010, 08:37
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Problema restar dos tiempos

Lo conseguí hacer de la siguiente manera.

Código PHP:
Ver original
  1. function date_diff($d1, $d2){
  2. // Compara dos timestamps y retorna el array con las diferencias (year, month, day, hour, minute, second)
  3.  
  4.   //comprueba la mayor marca de tiempo y la cambia si es necesario
  5.   if ($d1 < $d2){
  6.     $temp = $d2;
  7.     $d2 = $d1;
  8.     $d1 = $temp;
  9.   }
  10.   else {
  11.     $temp = $d1; //temp puede ser usado para el recuento de días si es necesario
  12.   }
  13.   $d1 = date_parse(date("Y-m-d H:i:s",$d1));
  14.   $d2 = date_parse(date("Y-m-d H:i:s",$d2));
  15.   //seconds
  16.   if ($d1['second'] >= $d2['second']){
  17.     $diff['second'] = $d1['second'] - $d2['second'];
  18.   }
  19.   else {
  20.     $d1['minute']--;
  21.     $diff['second'] = 60-$d2['second']+$d1['second'];
  22.   }
  23.   //minutes
  24.   if ($d1['minute'] >= $d2['minute']){
  25.     $diff['minute'] = $d1['minute'] - $d2['minute'];
  26.   }
  27.   else {
  28.     $d1['hour']--;
  29.     $diff['minute'] = 60-$d2['minute']+$d1['minute'];
  30.   }
  31.   //hours
  32.   if ($d1['hour'] >= $d2['hour']){
  33.     $diff['hour'] = $d1['hour'] - $d2['hour'];
  34.   }
  35.   else {
  36.     $d1['day']--;
  37.     $diff['hour'] = 24-$d2['hour']+$d1['hour'];
  38.   }
  39.   //days
  40.   if ($d1['day'] >= $d2['day']){
  41.     $diff['day'] = $d1['day'] - $d2['day'];
  42.   }
  43.   else {
  44.     $d1['month']--;
  45.     $diff['day'] = date("t",$temp)-$d2['day']+$d1['day'];
  46.   }
  47.   //months
  48.   if ($d1['month'] >= $d2['month']){
  49.     $diff['month'] = $d1['month'] - $d2['month'];
  50.   }
  51.   else {
  52.     $d1['year']--;
  53.     $diff['month'] = 12-$d2['month']+$d1['month'];
  54.   }
  55.   //years
  56.   $diff['year'] = $d1['year'] - $d2['year'];
  57.   return $diff;
  58.   //print_r($date_diff_array);
  59. }
  60.  
  61. function mostrar_date_diff($d1, $d2){
  62.     // Muestra el tiempo que ha pasado entre dos horas. Ej. Hace 2 horas
  63.     $date_diff_array = date_diff($d1, $d2);
  64.  
  65.     if ($date_diff_array['year']!=0){
  66.         if ($date_diff_array['year']==1) echo "Hace ".$date_diff_array['year']." año";
  67.         else echo "Hace ".$date_diff_array['year']." años";
  68.     }elseif ($date_diff_array['month']!=0){
  69.         if ($date_diff_array['month']==1) echo "Hace ".$date_diff_array['month']." mes";
  70.         else echo "Hace ".$date_diff_array['month']." meses";
  71.     }elseif ($date_diff_array['day']!=0){
  72.         if ($date_diff_array['day']==1) echo "Hace ".$date_diff_array['day']." dia";
  73.         else echo "Hace ".$date_diff_array['day']." dias";
  74.     }elseif ($date_diff_array['hour']!=0){
  75.         if ($date_diff_array['hour']==1) echo "Hace ".$date_diff_array['hour']." hora";
  76.         else echo "Hace ".$date_diff_array['hour']." horas";
  77.     }elseif ($date_diff_array['minute']!=0){
  78.         if ($date_diff_array['minute']==1) echo "Hace ".$date_diff_array['minute']." minuto";
  79.         else echo "Hace ".$date_diff_array['minute']." minutos";
  80.     }elseif ($date_diff_array['second']!=0){
  81.         if ($date_diff_array['second']==1) echo "Hace ".$date_diff_array['second']." segundo";
  82.         else echo "Hace ".$date_diff_array['second']." segundos";
  83.     }
  84. }
  85. // LLAMADA
  86. $fecha_modificada = strtotime("2010-02-28 13:11:00");
  87. mostrar_date_diff($fecha_modificada, time());

Lo único es que los tiempos de facebook se van actualizando solos sin recargar la página! no se como lograrlo, imagino que hace o bien una consulta en ajax o en javascript... que creéis?

Alguien mostrarme un ejemplo?

Salu2!